tapok26
7/26/2017 - 2:21 PM

smart links for bitrix pagination (for searching bots)

smart links for bitrix pagination (for searching bots)

1. in the end of template.php (system.pagenavigation component) put it:
<!-- SEO -->
<?addSEOheaderLinks($arResult['NavPageNomer'], $arResult['NavPageCount']);?>

2. place this few function at misc.php:
function addSEOheaderLinks($curPage, $totalPages){
	
	if($curPage > 1 && $curPage < $totalPages){
		$prevLink = getFullUriWithParams("PAGEN_1=".($curPage - 1), array("PAGEN_1"));
		$nextLink = getFullUriWithParams("PAGEN_1=".($curPage + 1), array("PAGEN_1"));
		$canonicalLink = getFullUriWithParams('', array("PAGEN_1"));

		if($curPage - 1 == 1){
			$prevLink = getFullUriWithParams('', array("PAGEN_1"));
		}

		Asset::getInstance()->addString("<link href='".$canonicalLink."' rel='canonical'>");
		Asset::getInstance()->addString("<link href='".$prevLink."' rel='prev'>");
		Asset::getInstance()->addString("<link href='".$nextLink."' rel='next'>");
	}else{
		if($curPage == 1){
			
			$nextLink = getFullUriWithParams("PAGEN_1=".($curPage + 1), array("PAGEN_1"));
			Asset::getInstance()->addString("<link href='".$nextLink."' rel='next'>");
				
		}else{ 											//$curPage == $totalPages
			$prevLink = getFullUriWithParams("PAGEN_1=".($curPage - 1), array("PAGEN_1"));
			$canonicalLink = getFullUriWithParams('', array("PAGEN_1"));

			if($curPage - 1 == 1){
				$prevLink = getFullUriWithParams('', array("PAGEN_1"));
			}

			Asset::getInstance()->addString("<link href='".$prevLink."' rel='prev'>");
			Asset::getInstance()->addString("<link href='".$canonicalLink."' rel='canonical'>");
		}
	}
}

function getFullUriWithParams($extraParams, $arRemovedParams){
	global $APPLICATION;

	//$arRemovedParams = array_merge($arRemovedParams, ['clear_cache_session']);
	$page = $APPLICATION->GetCurPageParam($extraParams, $arRemovedParams, false);
	$url = getSiteProtocol() . $_SERVER['SERVER_NAME'] . $page;

	return $url;
}

function getSiteProtocol(){
	return (CMain::IsHTTPS()) ? "https://" : "http://";
}

3. don't forget about:
use Bitrix\Main\Page\Asset;

4. that's all.