Dima_So
@Dima_So
Experientia est optima magistra

Как добавить номер страницы в мета-тег страницы пагинации?

На сайте реализована пагинации в каталоге. Title выводится через стандартный компонент.
В шаблоне выводится так:
<title><?$APPLICATION->ShowTitle()?></title>

Как добавить условие при котором у страницы вида www.site.ru/catalog/?PAGEN_1=2 в Title будет подставляться "Страница 2"?
  • Вопрос задан
  • 3077 просмотров
Решения вопроса 1
Давненько не писал на php, но вроде бы так
<title><?
$APPLICATION->ShowTitle();
if (isset($_GET["PAGEN_1"]) and is_int($_GET["PAGEN_1"])) 
{
    echo "Страница ".$_GET["PAGEN_1"];
}
?></title>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AlexeyGfi
@AlexeyGfi
YouTube >>> Битриксоид из Колхоза
Как делал бы я:

1. Завёл бы в админке, в настройках модулей, в управлении структуры в секции «типы свойств» новое свойство:
pagination_suffix

2. В шаблоне компонента инициализировал бы это свойство:
$APPLICATION->SetPageProperty( 'pagination_suffix', ' Страница zZz' );

Текст « Страница » по-правильному вынести в /lang/ файлы и тогда вызов предыдущей строки будет таким:
$APPLICATION->SetPageProperty( 
		'pagination_suffix', 
		\Bitrix\Main\Localization\Loc::getMessage( 'PAGE_IN_BROWSER_TITLE' ) . 'zZz' 
	);

Шаблон:
— знает, какой номер страницы;
— избавляет нас от геморроя с отслеживанием PAGEN_1, PAGEN_2, PAGEN_3, ...

Номер страницы берём из
$arResult[ 'NAV_RESULT' ]->NavNum;

3. Вывод заголовка дополнил бы так:
<title><?$APPLICATION->ShowTitle()?><?$APPLICATION->ShowProperty( 'pagination_suffix' )?></title>


(!) Есть риск, что это шаблон компонента кешируется и потому первый вызов даст нам нумерацию страниц, а потом перестанет срабатывать SetPageProperty. Я выношу код из template.php в component_epilog.php (почти всегда уже так делаю) и так все вызовы не кешируются.

Чтобы пробросить arResult в component_epilog.php, нужно в result_modifier.php прописать:
$this->__component->SetResultCacheKeys( arrary_keys( $arResult ) );


То есть у нас в папке с шаблоном компонента:
• result_modifier.php (создаём если его нет) с пробросом переменных;
• template.php, в котором остаётся только голосование за композит $this->setFrameMode(true);
• component_epilog.php, где собственно вывод на экран и выполнение прописывания заголовков.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы