Задача: Часто SEO-специалисты просят добавить номер страницы, из постраничной навигации, в заголовок и описание раздела каталога. По найденным инструкциям в интернете, все предлагают сделать это через init.php. Рассмотрим вариант без него.
Не люблю городить код в init.php, если можно обойтись без этого.
Получаем SEO данные раздела каталога и добавляем в метатеги
Все просто: в файле section.php комплексного шаблона каталога, в самом низу (после отработки компонента catalog.section) вносим код:
if (!empty($_REQUEST['PAGEN_1'])) {
$arResult['SECTION_ID'] = CIBlockFindTools::GetSectionID(
$arResult['VARIABLES']['SECTION_ID'],
$arResult['VARIABLES']['SECTION_CODE'],
array(
'IBLOCK_ID' => $arParams['IBLOCK_ID']
)
);
$ipropValues = new \Bitrix\Iblock\InheritedProperty\SectionValues(
$arParams['IBLOCK_ID'],
$arResult['SECTION_ID']
);
$seoProps = $ipropValues->getValues();
$APPLICATION->SetPageProperty(
"title",
$seoProps['ELEMENT_META_TITLE'] . ' - страница №' . $_REQUEST['PAGEN_1']
);
$APPLICATION->SetPageProperty(
"description",
$seoProps['ELEMENT_META_DESCRIPTION'] . ' - страница №' . $_REQUEST['PAGEN_1']
);
}
Проверяем, есть ли в запросе переменная PAGEN_1, которая указывает на текущую страницу в постраничной навигацией получаем идентификатора раздела, используется метод CIBlockFindTools::GetSectionID для получения идентификатора текущего раздела каталога.
Создается объект SectionValues для текущего раздела, используя его идентификатор и ID инфоблока.
Вызов метода getValues объекта SectionValues для получения массива с SEO-свойствами текущего раздела.
Устанавливаются значения для метатегов title и description, добавляя к ним номер текущей страницы из переменной PAGEN_1.
Получение ID раздела можно перенести в самый верх section.php если планируете получить все данные раздела и обработать их в шаблоне, следуя заметке
Получить поля раздела, включая пользовательские, в section.php