Динамический 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>
Надеюсь, вам понравится моя идея и это не какой-то, всем известный, велосипед.