Здесь приведен пример кода для навигации по блоку, данные которого разбиты на части.
Код без всякой переделки годится, как для прямой, так и для обратной выборки. Единственное различие – при обратной выборке ссылки на разные части будут отображаться в порядке убывания номеров, так как элементы массива $request['part']['parts'] будут идти в обратном порядке.
Для перехода на соседние части применены данные запроса $request['part']['prev'] и $request['part']['next'], в которых уже учтена возможность как обратной, так и естественной прямой выборки.
.tpl<?php $request = Request::get($block); # Ссылки на соседние части if (empty($request['part']['prev'])) echo "предыдущая"; elseif ($request['part']['prev'] == $request['part']['default']) echo"<a href='?page=$page'>предыдущая</a>"; else echo "<a href='?page=$page&block=$block&part=$request['part']['prev']'>предыдущая</a>"; if (empty($request['part']['next'])) echo "следующая"; elseif ($request['part']['next'] == $request['part']['default']) echo"<a href='?page=$page'>следующая</a>"; else echo "<a href='?page=$page&block=$block&part={$request['part']['next']}'>следующая</a>"; # Ссылки на каждую часть foreach ($request['part']['parts'] as $p) { if ($p == $request['part']['current']) # Текущая часть echo "<span>$p</span>"; elseif ($p == $request['part']['default']) echo"<a href='?page=$page'>$p</a>"; else echo "<a href='?page=$page&block=$block&part=$p'>$p</a>"; } ?>
В приведеном выше коде голубым маркером выделена ветка кода, исключающая дублирование страниц. Дело в том, что дефолтная часть может открываться по двум различным URL — с номером части и вообще без номера. Для поисковой оптимизации использование одного из таких URL желательно исключить. Лучше оставить вариант без номера части.
Часть, открываемая по умолчанию, то есть, без запроса part, может равняться единице или максимальному числу частей, в зависимости от сочетания параметров $params['backward'] и $params['part']['numbering']. Для того, чтобы узнать дефолтную часть и служит вспомогательный параметр $request['part']['default'].