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.