Разработка сайтов и интернет-магазинов на 1С-битрикс, порталы Битрикс24, seo продвижение, реклама, поддержка проектов
Как изменить мета теги в битриксе при постраничной навигации

Как изменить мета теги в битриксе при постраничной навигации

Логотип Liberty
Константин Либерман
Константин Либерман
Основатель компании «LIBERTY»
55 просмотров
На всех ваших проектах скорей всего используются компоненты каталога или новостей, но как изменить title, description и h1 на второй, третей и т.д. страницах?
Открываем файл init.php и вставляем следующий код:

/*****    Изменить мета теги в битриксе при постраничной навигации *****/
AddEventHandler("main", "OnEndBufferContent", "updatePagenation");
function updatePagenation(&$content){
    if (isset($_GET['PAGEN_1']) && $_GET['PAGEN_1'] > 1) {
        $curPage = $_GET['PAGEN_1'];
        // title
        $content = str_replace("</title>", " — страница ".$curPage."</title>", $content);
        // description
        $pattern = '#<meta name="description" content="(.*?)" />#s';
        preg_match($pattern, $content, $matches);
        $content = str_replace($matches[1], $matches[1]." — страница ".$curPage, $content);
        // h1
        $content = str_replace("</h1>", " — страница ".$curPage."</h1>", $content);
    }
}
/*****    Изменить мета теги в битриксе при постраничной навигации *****/

Данное событие “Вызывается при выводе буферизированного контента”. Это значит что она выполнится уже после того, как ваш HTML сформировался (про то какие события и функция выполняются в битриксе вы можете прочитать подробнее в официальной документации). При помощи регулярного выражения, мы находим необходимые нам теги и заменяем в них содержимое.

При переходе на вторую, третью и т.д. страницы мета теги примут следующий вид:

<title>Клиенты компании LIBERTY — страница 2</title>
<meta name="description" content="Среди наших партнеров крупнейшие российские и международные компании в сфере промышленности, транспорта, питания, телекоммуникаций и услуг. — страница 2" />
<h1>Клиенты — страница 2</h1>