Красивый URL пагинации без кастомных компонентов

Стандартная ситуация в вакууме - есть инфоблок, в нем разделы, в них элементы.
Шаблоны ссылок выглядят так:
/test/ - корневая директория
/test/first-sect/ - страница списка элементов корневого раздела
/test/second-sect/ - страница списка элементов другого корневого раздела
/test/first-sect/subsect/ - страница списка элементов подраздела
/test/first-sect/subsect/item1/ - страница элемента в подразделе
/test/second-sect/item2/ - страница элемента в корневом разделе
Задача:
/test/page3/ - третья страница общего списка
/test/first-sect/page2/ - вторая страница элементов корневого раздела
/test/first-sect/subsect/page4/ - четвертая страница элементов подраздела
Решение:
Добавляем в /test/ комплексный компонент (news, catalog) и настраиваем ему шаблоны ссылок
SEF_FOLDER = "test"
section = #SECTION_PATH_CODE#/
element = #SECTION_PATH_CODE#/#ELEMENT_CODE#/
сохраняем, копируем к себе в шаблон шаблон этого комплексного компонента
далее (можно "по-умному" добавить в шаблон комплексного компонента .parameters.php и описать новые свойства, а можно просто руками прописать новые свойства)
page = page#PAGE_ID#/
pagesect = #SECTION_PATH_CODE#/page#PAGE_ID#/
создаем в шаблоне файлы page.php и pagesect.php с примерно таким содержанием
global $NavNum; // номер пагинации предыдущего списка элементов
$NextNavNum = (int)$NavNum + 1; // это номер пагинации следующего списка (нашего)
$NavName = 'PAGEN_'.$NextNavNum;
global ${$NavName}; // глобальная переменная, в которую нужно положить номер страницы
${$NavName} = (int)$arResult['VARIABLES']['PAGE_ID'];
include('section.php'); // подключаем файл вывода данных
и в конце останется лишь поменять шаблон постраничной пагинации, чтобы ссылки были какими надо (..../pageN/)

Красивый URL пагинации без кастомных компонентов - 593864702198

Комментарии

Комментариев нет.