Правильный уникальный title для страниц типа ?PAGEN_1=N
11/10/2015

Все прекрасно знают что без доп обработки Bitrix не очень хороша для СЕО, поэтому приходится дописывать доп функционал. В этой статье я покажу свой способ решения проблемы с не уникальным тайтлом на 2,3 и и.д страницах категории (новости или любого инфоблока). Тайтл будет в виде #Название категории# страница #N#.

Для начала нам нужно определить номер страницы. Для этого в шаблоне стандартного компонента system.pagenavigation в глобальную переменную занесем наш номер страницы. Значение переменной хранится с переменной $arResult["nStartPage"]. Соответственно находим место определения текущей страницы и вставляем этот кусочек.

 <?
            GLOBAL $page_counter;
            $page_counter=$arResult["nStartPage"];?>

Конечный результат будет таков:

<?if ($arResult["nStartPage"] == $arResult["NavPageNomer"]):?>
         <?
            GLOBAL $page_counter;
            $page_counter=$arResult["nStartPage"];
         ?>
    <span class="nav-current-page"><?=$arResult["nStartPage"]?></span>
<?elseif($arResult["nStartPage"] == 1 && $arResult["bSavePage"] == false):?>
            <a href="<?=$arResult["sUrlPath"]?><?=$strNavQueryStringFull?>"><?=$arResult["nStartPage"]?></a>
<?else:?>
            <a href="<?=$arResult["sUrlPath"]?>?<?=$strNavQueryString?>PAGEN_<?=$arResult["NavNum"]?>=<?=$arResult["nStartPage"]?>"><?=$arResult["nStartPage"]?></a>
<?endif?>

Теперь переходим в шаблон catalog.section и определяем нашу переменную тайтла. Также нам понадобится наша функция request_url для определения страницы и исключения не нужных.

<?GLOBAL $page_counter;
$urlnow = request_url();?>
<?if (preg_match("/PAGEN/", $urlnow, $matches, PREG_OFFSET_CAPTURE)):?>
<?GLOBAL $title_section;
$title_section= $arResult["NAME"].' страница '.$page_counter;
?>
<?else:?>
<?endif;?>

Теперь спокойно переносим наш title в header.php (шапка сайта) ис помощью функции ShowCondTitle переопределяем наш тайтл:

<?
$urlnows = request_url();
if (preg_match("/PAGEN/", $urlnows, $matches, PREG_OFFSET_CAPTURE)):?>
<?php

function ShowCondTitle()
{
global $APPLICATION;
GLOBAL $title_section;
//echo $title_section;
if (!$APPLICATION->GetTitle())
return "Стандартная страница";
else
return $title_section;
} ?>
<title><?$APPLICATION->AddBufferContent('ShowCondTitle');?></title>
<?else:?>
<title><?$APPLICATION->ShowTitle()?></title>
<?endif;?>
  • Комментарии
Загрузка комментариев...