Динамический title страницы - радуем поисковики
Недавно заметил, что в webmaster.yandex.ru у меня очень много одинаковых заголовков страниц. И если на SEO как таковое мне откровенно начхать, то некрасивый вывод сайта в результатах поиска не радует.
Решил немного поэксперементировать в этом направлении, в результате чего получился довольно простой сниппет.
Что умеет: - Если есть longtitle - он используется вместо pagetitle (можно указать другое поле)
- Затем добавляются родители страницы, используя pdoCrumbs
- Если на странице есть пагинация - добавляет "стр. n из nn"
- Результаты работы кэшируются, с учетом параметров url
Дмуаю, вы сможете еще самостоятельно добавить чего-нибудь в этот сниппет.
<?php
// Определяем переменные
if (empty($separator)) {$separator = ' / ';}
if (empty($titlefield)) {$titlefield = 'longtitle';}
if (empty($parents_limit)) {$parents_limit = 3;}
if (empty($tplPages)) {$tplPages = 'стр. [[+page]] из [[+pageCount]]';}
// Ключ и параметры кэширования
$cacheKey = $modx->resource->getCacheKey() . '/title_' . sha1(serialize($_REQUEST));
$cacheOptions = array('cache_key' => 'resource');
if (!$pagetitle = $modx->cacheManager->get($cacheKey, $cacheOptions)) {
// Узнаём имя страницы
$pagetitle = !empty($modx->resource->$titlefield)
? $modx->resource->$titlefield
: $modx->resource->pagetitle;
// Добавляем поисковый запрос, если есть
if (!empty($_GET['query']) && strlen($_GET['query']) > 2) {
// Нужно использовать плейсхолдер, чтобы не подсунули бяку
$pagetitle .= ' «[[+mse2_query]]»';
}
// Добавляем пагинацию, если есть
if (!empty($_GET['page'])) {
$pagetitle .= $separator . str_replace('[[+page]]', intval($_GET['page']), $tplPages);
}
// Добавляем родителей
$crumbs = $modx->runSnippet('pdoCrumbs', array(
'to' => $modx->resource->id,
'limit' => $parents_limit,
'outputSeparator' => $separator,
'showHome' => 0,
'showAtHome' => 0,
'showCurrent' => 0,
'direction' => 'rtl',
'tpl' => '@INLINE [[+menutitle]]',
'tplCurrent' => '@INLINE [[+menutitle]]',
'tplWrapper' => '@INLINE [[+output]]',
'tplMax' => ''
));
if (!empty($crumbs)) {
$pagetitle = $pagetitle . $separator . $crumbs;
}
// Кэшируем результаты
$modx->cacheManager->set($cacheKey, $pagetitle, 0, $cacheOptions);
}
// Возвращаем title
return $pagetitle;
Использовать очень просто - вызываем сниппет в шаблоне страницы:
<title>[[!Title]] / [[++site_name]] - мой самый лучший на свете сайт</title>
Надеюсь, вам понравится моя идея и это не какой-то, всем известный, велосипед.
0
👍
👎
❤️
🔥
😮
😢
😀
😡
7 337
17.11.2013, 09:53:08
14 комментариев
Володя
17.11.2013, 14:25:55
Каким образом динамически изменять title на аякс страницах? К примеру у тебя на сайте — раздел поиск. Ты там тоже внедрил динамику, но title ведь не меняется при аякс переходах, а только при обновлении страницы.
Василий Наумкин
17.11.2013, 14:32:27
Легко, просто бери и меняй тег title
Заголовок нужен больше поисковикам, чем людям, поэтому ajax я не заморачиваюсь. Тем более, что при обновлении страницы title будет сгенерирован какой надо.
Для mSearch2 я только что добавил условие:
Вот, погляди как получается.
Дмитрий Ломакин
02.01.2014, 10:32:19
не работает. что то с кешированием при переходе по страницам поиска не меняется
Василий Наумкин
02.01.2014, 15:02:00
У меня страницы поиска перелистываются через ajax - там и не будет ничего меняться.
А если перемотать на вторую страницу, и обновить - тогда title будет верный.
Дмитрий Ломакин
03.01.2014, 01:05:41
Понял
Хотя с точки зрения удобства пользования вызывает недоумение находишься на 17 странице поиска заголовок: Поиск «тест» / стр. 4 из 30 / bezumkin.ru ИМХО лучше вообще из заголовка номер страницы убрать, оставить: Поиск «тест» / 30 стр. / bezumkin.ru
И еще: когда пользуешься поиском очень востребована информация кто топикстартер, сколько комментариев и кто автор текста найденного, что бы оценить стоит ли читать это. Без этого уже сейчас полезная информация тонет в куче бесполезной, а в перспективе...
Василий Наумкин
03.01.2014, 03:25:41
А ты постоянно заглядываешь в title, чтобы понять на какой странице сейчас находишься? Я вот на него смотрю, только если в закладки добавил.
Но ради интереса набросал скриптик изменения title. Заодно добавил и топикстартера.
Дмитрий Ломакин
03.01.2014, 04:32:12
про "Я вот на него смотрю, только если в закладки добавил." согласен на 100% только если в закладки добавилась стр 4, а по ссылке открывается стр. 7, то начинается взрыв мозга. --------------- "Заодно добавил и топикстартера. " - спасибо, теперь бы еще фильтр по нему, вообще бы песня!
Василий Наумкин
03.01.2014, 12:35:48
Фильтр по нему - это список из 200 - 300 позиций. Толку от такого фильтра нет.
Дмитрий Ломакин
04.01.2014, 01:15:12
Убедил ).
Андрей
14.09.2014, 21:19:56
Василий, вообще-то страницу с результатами поиска принято закрывать от поисковиков в robots.txt А у тебя, гляжу, много "мусорных" страниц и дублей в поисковой выдаче. И тИЦ яндекс обнулил даже. Вот, глянь http://xtool.ru/trast.php?site=bezumkin.ru
Алексей Марченко
19.11.2013, 01:56:48
Очередное спасибо, Василий
Igor Ostancov
02.01.2014, 18:36:24
Я использую History JS для аякс сайтов. Для каждой ссылки меню или любой другой которую собираюсь грузить аяксом я вывожу title целевого ресурса в title ссылки:
При клике на ссылку делаю в js:
И соотв. History при переходе на эту страницу подставляет ее title, взятый из ссылки.
Алексей Карташов
04.01.2014, 21:29:55
И всё, блеать!
На крайний случай:
JS надо не с jquery начинать изучать, чтобы потом jquery-головного_мозга не было.
Sergey
17.09.2014, 18:22:28
Добрый день, Василий! Может включить этот сниппет в pdoToools? Назвать допустим pdoTitle )))
bezumkin.ru
Личный сайт Василия Наумкина
Прямой эфир
Василий Наумкин
01.07.2024, 11:56:41
Да, верно, именно так.
А в контроллере, скорее всего, ловить данные методом post.
Василий Наумкин
26.06.2024, 09:38:15
О, точно, вылезает если не залогинен.
Спасибо, исправил!
Василий Наумкин
09.04.2024, 04:45:01
> Ошибка 500
Это не похоже на ошибку Nginx, это скорее всего ошибка PHP - надо смотреть его логи.
...
russel gal
09.03.2024, 20:17:18
> А этот стоило написать хотя бы затем, чтобы получить комментарий от юзера, который ничего не писал...
Александр Наумов
27.01.2024, 03:06:18
Василий, спасибо!
Извини, тупанул.