Номера страниц в Title и Description при постраничной навигации каталога

Просмотров: 551

Задача: Часто SEO-специалисты просят добавить номер страницы, из постраничной навигации, в заголовок и описание раздела каталога. По найденным инструкциям в интернете, все предлагают сделать это через init.php. Рассмотрим вариант без него.

Номера страниц в Title и Description при постраничной навигации каталога
Не люблю городить код в 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
Михаил Базаров 14.07.2024
Этот подход можно использовать и для списка новостей, всю обработку добавляем в комплексном компоненте news или в component_epilog.php шаблонов news.line и news.list

Стоимость и сроки разработки сайтов и приложений

Окончательная стоимость и сроки разработки сайта формируются после обсуждения деталей на этапе заказа. Как правило, они редко выходят за обозначенные ниже рамки.

Интернет магазин: разработка с нуля от 350 000 руб.
от 5-ти недель

Cоздание интернет-магазина на 1С-Битрикс. Разработка с нуля, оптимизация кода под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Сайт на готовом решении / шаблоне от 100 000 руб.
от 7-ми дней

Готовое решение — вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Запускается на одном из 200-та (на ваш выбор) готовых решений.

Мобильное приложение от 400 000 руб.
от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Вы можете скачать развернутый опросник на разработку. После ознакомления, задам уточняющие вопросы и оценю проект по стоимости и срокам разработки.