Полезные статьи по разработке сайта на системе управления 1С-Битрикс. Программирование. Верстка.

Как в битриксе поменять rel canonical, prev и next при постраничной навигации

  90
Из данной статьи вы узнаете также как поменять “столь любимый сеошниками” rel canonical.

Установка link rel=”canonical”, а также “prev” и “next”:
– залазим в компонент постраничной навигации и создаем файл component_epilog.php если он еще не создан:
 <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

if (!defined('ERROR_404')){
	$arResult['URL'] = $arResult['SECTION_CODE'];

	$url = $APPLICATION->GetCurDir();

	$APPLICATION->AddHeadString('<link rel="canonical" href="https://site.ru'.$url.'">');

	if (isset($arResult['NAV_NUM'], $arResult['NAV_PAGE_NOMER'], $arResult['NAV_PAGE_COUNT'], $arResult['URL'])){
		if ($arResult['NAV_PAGE_COUNT'] > $arResult['NAV_PAGE_NOMER']) { // rel next
			$next = $arResult['NAV_PAGE_NOMER'] + 1;
			$urlNextRel = $arResult['URL']."?PAGEN_1=".$next;       
		} 
		if ($arResult['NAV_PAGE_NOMER'] > 1) { // rel prev
			$prev = $arResult['NAV_PAGE_NOMER'] - 1;
			If($prev > 1){
				$urlPrevRel = $arResult['URL']."?PAGEN_1=".$prev; 
			}
			else{
				$urlPrevRel = $arResult['URL'];
			}
		} 
		if (isset($urlNextRel)) {
			//$APPLICATION->SetPageProperty('next', 'https://' . $_SERVER["HTTP_HOST"] . $urlNextRel);
			$APPLICATION->AddHeadString('<link rel="next" href="https://' .$_SERVER["HTTP_HOST"].$urlNextRel . '">');
		} 
		if (isset($urlPrevRel)) {
			//$APPLICATION->SetPageProperty('prev', 'https://' . $_SERVER["HTTP_HOST"] . $urlPrevRel);
			$APPLICATION->AddHeadString('<link rel="prev" href="https://' .$_SERVER["HTTP_HOST"].$urlPrevRel . '">');
		} 
	}
}
Вам нужно передать все параметры в массиве $arResult, которые вы видите в коде, иначе могут быть ошибки. В примере используется компонент и шаблон bitrix/system.pagenavigation/arrows.
Помощь проекту
Привет, меня зовут Вика! Я являюсь автором сайта Weblim.
Если Вам помогла данная статья, вы можете отблагодраить меня перечислив любую денежную сумму. Заранее спасибо!