Муха позволяет разбить на страницы произвольный список, как правило, эта функция нужна для вывода длинного списка страниц.
При разбиении дополнительные страницы генерируются автоматически, предусмотрена сервисная функция для генерации правильного виджета ппагинации.
Для разбиения служит функция шаблонизатора splitToPages(array, byNumber). Первый аргумент — список,
второй, необязательный — сколько элементов должно быть на одной странице. Если второй аргумент не
опеределен, используется значение из конфигурационного файла.
После вызова этой функции создаются «виртуальные» страницы для вывода списка, у них выставляются поля page_count, page_links, page_number
и list_page. В последнем находится часть списка для вывода на текущей странице. Целиком разбиение
списка и вывод будет выглядеть так:
<!-- код из шаблона -->
<!-- забираем все файлы в подразделе: -->
{% set my_list=list.getNearFiles("/docs/index.html") %}
<!-- разбиваем на страницы -->
{{ splitToPages(my_list) }}
<!--выводим текущую страницу списка-->
<ul>
{% for P in page.list_page %}
<li>
<strong><a href="{{ P.file.path }}">{{ P.meta.title }}</a></strong>
<div><small>{{ P.meta.excerpt }}</small></div>
</li>
{% endfor %}
</ul>
Список будет разбит на страницы, для каждой части списка будет сгенерирована отдельная страница, но нужно еще предусмотреть листалку, иначе у пользователя не будет возможности полистать список.
Используя поля page_count, page_links, page_number, можно построить собственный виджет
пагинации любого вида, а для «классической» пагинации в шаблонизаторе есть сервисная функция util.paginate(edge, center).
Параметр edge определяет, сколько ссылок на странцы будет видно по краям виджета, а center — в середине. Алгоритм
будет стремиться вывести виджет одной длины (количества кнопок) на всех страницах. Функция возвращает список объектов
с полями:
link — ссылка (может быть null)label — номер страницы или многоточие (пропуск)type — тип кнопки: ellipsis для пропусков, current — для текущей страницы, link — для обычной ссылки.{% set paginator = util.paginate() %}
{% if paginator.length>1 %}
<div class="container pagination">
{% for pagina in paginator %}
<a href="{{ pagina.link }}">{{ pagina.label }}</a>
{% endfor %}
</div>