Пагинация REL PREV NEXT 1С-Битрикс | Для разработчиков | Сайты для бизнеса
Заказать обратный звонок * Бесплатный сервис связи * В удобное для вас время

Пагинация REL PREV NEXT 1С-Битрикс


Что бы облегчить поисковикам работу можно указать в теге header сайта link с атрибутом REL и значениями PREV и NEXT, со ссылками на нужные страницы, например ?PAGEN_1=2 . Это полезно для СЕО, иначе поисковики могут принять эти страницы за дубли. Также важно указать canonical на страницах с пагинацией.
Для этого нам придется править всего два файла шаблона компонента:

1. result_modifier.php
В нем мы должны взять все необходимые данные из переменной $arResult['NAV_RESULT']
  1. $arResult['NAV_NUM'] = $arResult['NAV_RESULT']->NavNum;
  2. $arResult['NAV_PAGE_NOMER'] = $arResult['NAV_RESULT']->NavPageNomer;
  3. $arResult['NAV_PAGE_COUNT'] = $arResult['NAV_RESULT']->NavPageCount;
  4. $arResult['SECTION_CODE'] = $arParams["SECTION_CODE"];
  5. $this->__component->SetResultCacheKeys([
  6. 'NAV_NUM',
  7. 'NAV_PAGE_NOMER',
  8. 'NAV_PAGE_COUNT',
  9. 'SECTION_CODE',
  10. ]);

2. component_epilog.php
Далее в файле, который срабатывает при включенном кэшировании
  1. if (!defined('ERROR_404')){
  2. $arResult['URL'] = "/catalog/".$arResult['SECTION_CODE']."/";
  3. if($arResult['NAV_PAGE_NOMER']>1){
  4. $APPLICATION->AddHeadString('<link rel="canonical" href="http://' .$_SERVER["HTTP_HOST"].$arResult['URL'] . '">');
  5. }
  6.  
  7. if (isset($arResult['NAV_NUM'], $arResult['NAV_PAGE_NOMER'], $arResult['NAV_PAGE_COUNT'], $arResult['URL'])){
  8. if ($arResult['NAV_PAGE_COUNT'] > $arResult['NAV_PAGE_NOMER']) { // rel next
  9. $next = $arResult['NAV_PAGE_NOMER'] + 1;
  10. $urlNextRel = $arResult['URL']."?PAGEN_1=".$next;
  11. }
  12. if ($arResult['NAV_PAGE_NOMER'] > 1) { // rel prev
  13. $prev = $arResult['NAV_PAGE_NOMER'] - 1;
  14. If($prev > 1){
  15. $urlPrevRel = $arResult['URL']."?PAGEN_1=".$prev;
  16. }
  17. else{
  18. $urlPrevRel = $arResult['URL'];
  19. }
  20. }
  21. if (isset($urlNextRel)) {
  22. //$APPLICATION->SetPageProperty('next', 'http://' . $_SERVER["HTTP_HOST"] . $urlNextRel);
  23. $APPLICATION->AddHeadString('<link rel="next" href="http://' .$_SERVER["HTTP_HOST"].$urlNextRel . '">');
  24. }
  25. if (isset($urlPrevRel)) {
  26. //$APPLICATION->SetPageProperty('prev', 'http://' . $_SERVER["HTTP_HOST"] . $urlPrevRel);
  27. $APPLICATION->AddHeadString('<link rel="prev" href="http://' .$_SERVER["HTTP_HOST"].$urlPrevRel . '">');
  28. }
  29. }
  30. }

Обратите внимание на первую строчку, там происходит проверка, существует ли страница, иначе каноникал и линки будут указываться на 404 странице, что совершенно не нужно.
На второй строке указывается собственно URL который мы будем подставлять, в данном случае это раздел каталога /catalog/символьный код/
Затем в каноникал уже указывается полный адрес в функции AddHeadString с приклеиванием домена $_SERVER["HTTP_HOST"].
Кстати если у вас сайт на HTTPS, то протокол можно указать так:
  1. $protocol = ($APPLICATION->IsHTTPS() ? 'https://' : 'http://');
Тег link с атрибутом rel можно вывести по разному используя AddHeadString
  1. $APPLICATION->AddHeadString('<link rel="prev" href="http://' .$_SERVER["HTTP_HOST"].$urlPrevRel . '">');
или SetPageProperty
  1. $APPLICATION->SetPageProperty('prev', 'http://' . $_SERVER["HTTP_HOST"] . $urlPrevRel);
Если используете второй вариант, то в header.php нужно использовать функции
  1. $APPLICATION->ShowLink('prev', 'prev');
  2. $APPLICATION->ShowLink('next', 'next');
или
  1. $APPLICATION->AddBufferContent([$APPLICATION, 'GetLink'], 'prev');
  2. $APPLICATION->AddBufferContent([$APPLICATION, 'GetLink'], 'next');

Загрузка

367 просмотров
15.06.2018


Комментариев пока нет
Оставить комментарий
 
Текст сообщения*
Защита от автоматических сообщений
 


Сервисы




Последние публикации

15.Июн.2018 Пагинация REL PREV NEXT 1С-Битрикс
Что бы облегчить поисковикам работу можно указать в теге hea...

07.Июн.2018 Как выровнять блок по центру экрана
Что бы выровнять блок по горизонтали, достаточно прописать с...

07.Июн.2018 Билайн продолжает списывать деньги при минусе
Это продолжение предыдущей статьи.
В прошлый раз я пис...

30.Май.2018 Новая версия 1С-Битрикс 18
Вышла новая версия 1С-Битрикс: Управление сайтом версии 18.0...

22.Май.2018 Настройка ЧПУ в 1С-Битрикс
Самый главный файл в 1С-Битрикс для настройки ЧПУ это urlrew...

22.Май.2018 Форматирования BB кода в 1С-Битрикс
Часто возникает ситуация, когда надо отформатировать текст, ...

21.Дек.2017 Не работает init.php
Если вы вносите правки в системный файл Битрикс init.php и н...

06.Июн.2017 Не выводятся деньги с QIWI на карту Сбербанка
При выводе средств из кашелька КИВИ (Visa QIWI Wallet...

26.Май.2017 Как правильно составлять задание для программиста на кворке
Многие делая заказ на бирже фриланса (кворк, fl.ru, free...

16.Май.2017 Запускается хром с рекламным сайтом
Очень часто в последнее время на моем компьютере начал самоп...