03.06.2021
Есть несколько вариантов реализации задачи. Для примера рассмотрим два: когда нам надо вставить в конец Titile просто " - страница N" и когда нам надо поставить "страница N из NN".
Отличаются они тем, что во втором случае мы не можем просто использовать GET параметр из адреса страницы.
1) Довольно простой, готовые примеры уже есть в интернете:
// Ставим событие на Эпилог - можно в init.php AddEventHandler('main', 'OnEpilog', 'OnEpilogHandler'); function OnEpilogHandler() { global $APPLICATION; // ставим > 1, чтобы для 1 страницы не показывать номер if (!empty($_GET['PAGEN_1']) && intval($_GET['PAGEN_1'])>1) { $title = $APPLICATION->GetPageProperty("title"); if(empty($title)) $title = $APPLICATION->GetTitle(); // еще вариант $description = $APPLICATION->GetPageProperty("description"); if(!empty($title)) $APPLICATION->SetPageProperty('title', $title.' - страница '.$NavPageNomer.' из '.$NavPageCount); if(!empty($description)) $APPLICATION->SetPageProperty('description', $description.' - страница '.$NavPageNomer.' из '.$NavPageCount); } }
2) Тут чуть сложнее. Опять же можно сделать по разному, показываю как делал я.
Нам нужно проставить переменные страницы в шаблонах компонент пагинации. Тут сразу важное замечание, шаблон пагинации в данном случае уже будет не дефолтным, а кастомный, т.к. нам нужно внести небольшие правки.
Идем в шаблон компонента system.pagenavigation, если у нас его нет, то создаем копию дефолтного из папки bitrix/components/ , если у вас их несколько - добавляем во все.
Открываем или создаем файл component_epilog.php. Туда добавляем код:
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); global $APPLICATION; // мы не хотим показывать для первой страницы в Тайтл номер страницы if($arResult["NavPageNomer"] > 1) { $APPLICATION->SetPageProperty("NavPageNomer", $arResult["NavPageNomer"]); $APPLICATION->SetPageProperty("NavPageCount", $arResult["NavPageCount"]); }
Теперь добавляем событие на Эпилог (можно в файл init.php):
AddEventHandler('main', 'OnEpilog', 'OnEpilogHandler'); function OnEpilogHandler() { global $APPLICATION; $NavPageNomer = intval($APPLICATION->GetPageProperty("NavPageNomer")); $NavPageCount = intval($APPLICATION->GetPageProperty("NavPageCount")); // ставим > 1, чтобы для 1 страницы не показывать номер if (!empty($NavPageNomer) && intval($NavPageNomer)>1){ $title = $APPLICATION->GetPageProperty("title"); if(empty($title)) $title = $APPLICATION->GetTitle(); // еще вариант $description = $APPLICATION->GetPageProperty("description"); if(!empty($title)) $APPLICATION->SetPageProperty('title', $title.' - страница '.$NavPageNomer.' из '.$NavPageCount); if(!empty($description)) $APPLICATION->SetPageProperty('description', $description.' - страница '.$NavPageNomer.' из '.$NavPageCount); } }
ЕДИНСТВЕННОЕ!!! Сразу скажу, что не рассматривался вариант, когда на странице сразу несколько пагинаций. Это частный случай, надо рассматривать индивидуально.
Надеюсь кому-нибудь поможет
Хостинг - FastVPS