Bitrix CMS : Автоматическое добавление номеров страниц пагинации
Чтобы автоматически добавлять номера страниц пагинации в мета-теги на CMS Битрикс, можно использовать следующие подходы:
1. Решение через обработчик события (глобально для всех страниц)
Добавьте код в /bitrix/php_interface/init.php:
AddEventHandler('main', 'OnBeforeProlog', 'modifyMetaForPagination');
function modifyMetaForPagination() {
global $APPLICATION;
foreach ($_GET as $key => $value) {
if (strpos($key, 'PAGEN_') === 0) {
$pageNumber = (int)$value;
if ($pageNumber > 1) {
// Обработка Title
$currentTitle = $APPLICATION->GetTitle();
if ($currentTitle) {
$APPLICATION->SetTitle($currentTitle . ' - Страница ' . $pageNumber);
}
// Обработка Description
$currentDesc = $APPLICATION->GetPageProperty('description');
if ($currentDesc) {
$APPLICATION->SetPageProperty('description', $currentDesc . ' - Страница ' . $pageNumber);
}
}
break;
}
}
}
Преимущества:
- Работает для всех страниц с пагинацией.
- Не требует изменения шаблонов компонентов.
2. Решение через шаблон компонента (например, для catalog.section)
Добавьте код в начале шаблона компонента (например, /bitrix/templates/ваш_шаблон/components/bitrix/catalog.section/your_template/template.php):
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();
global $APPLICATION;
$pageNumber = (int)$_GET['PAGEN_1'];
if ($pageNumber > 1) {
// Обновляем Title
$originalTitle = $APPLICATION->GetTitle();
$APPLICATION->SetTitle($originalTitle . ' - Страница ' . $pageNumber);
// Обновляем Description
$originalDesc = $APPLICATION->GetPageProperty('description');
$APPLICATION->SetPageProperty('description', $originalDesc . ' - Страница ' . $pageNumber);
}
// Далее идет стандартный код шаблона
Преимущества:
- Локальное изменение только для конкретного компонента.
- Позволяет гибко настраивать формат для разных разделов.
Важные замечания:
- Проверка номера страницы: Код добавляет номер только если
> 1
(чтобы избежать “Страница 1”). - Кодировка и SEO: Убедитесь, что мета-теги не обрезаются (проверьте максимальную длину).
- Множественная пагинация: Если на странице несколько пагинаций (например,
PAGEN_1
иPAGEN_2
), код обработает первый найденный параметр.
Пример результата для PAGEN_1=2
:
<title>Каталог напольных покрытий - Страница 2</title>
<meta name="description" content="Широкий выбор напольных покрытий. Страница 2">
Если есть вопросы задавайте в комментариях.