Содержание

Тег {{pager}}

Описание

{{pager}} позволяет выводить так называемый pager, то есть список страниц со ссылками.

MACRO pager поддерживает 2 способа вывода большого количества ссылок:

  1. режим elipses, когда выводится только несколько страниц вокруг текущей и некоторое количество страниц в начале и в конце списка (см. тег {{pager:elipses}}). Список страниц будет выглядеть приблизительно так: 1-2-3…7-8-9…20-21-22. Этот режим предпочтительнее, когда для пользователя по сути не важно попасть на какую-то определенную страницу.
  2. режим sections (секции), которые можно понимать как страницы страниц. Список страниц будет выглядеть приблизительно так: [1-10][11-20]21-22-23-24-25-26-27-28-29-30[31-40][40-47]

Конечно, можно выводить просто ссылка на первую, предыдущую, следующую и последнуюю страницы, если это вам продходит.

Выделяют следующие элементы pager-а:

Вывод pager-а достаточно гибко настраивается.

см. также разделы

Синтаксис

{{pager id='pager_id' items='items_per_page' total_items='total_items' [pages_per_section='pages_per_section'] [pages_in_middle='pages_in_middle'] [pages_in_sides='pages_in_sides']/>
__some_chil_tags_with_decorating_content__
{{/pager}}

Область применения

В любом месте MACRO шаблона.

Атрибуты

Содержимое

Дочерние теги, плюс элементы оформления.

Как осуществляется пейджинация

Кратко как осуществляется так называемая пейджинация с участием {{pager}}-а:

  1. Есть итератор, который поддерживает интерфейс lmbCollection (пакет CORE)
  2. тег {{paginate}}:
    • передает в {{pager}} количество элементов все в списке
    • {{pager}} сам вычисляет на основе переменной $_GET[pager_id] номер текущей страницы.
    • далее {{paginate}} забирает из {{pager}}-а количество элементов на одной страницы и номер элемент, с которого должна начаться текущая страница и вызывает метод paginate() с этими параметрами.

Пример использования

Pager с секциями

{{pager id="pager" items="5" pages_per_section="5"}}
 
total items : {$total_items}. shown: from <b>{$begin_item_number}</b> to <b>{$end_item_number}</b>
 
{{pager:first}}<a href="{$href}">first</a>{{/pager:first}}
{{pager:prev}}<a href="{$href}">first</a>{{/pager:prev}}
 
{{pager:list}}
{{pager:section}}<a href="{$href}">[{$section_begin_page}..{$section_end_page}]</a>{{/pager:section}}
{{pager:current}}<b><a href="{$href}">{$number}</a></b>{{/pager:current}}
{{pager:number}}<a href="{$href}">{$number}</a>{{/pager:number}}
{{pager:separator}}-{{/pager:separator}}
{{/pager:list}}
 
{{pager:next}}<a href="{$href}">next</a>{{/pager:next}}
{{pager:last}}<a href="{$href}">last</a>{{/pager:last}}
 
{{/pager}}

Выведет приблизительно вот такой pager:

 Total items : 174. Shown: from 121 to 130.
 First Prev [1..5][6..10]11-12-13-14-15[16..17] Next Last

Pager с elipses

{{pager:navigator id="pager" items="5" pages_in_middle="5" pages_in_sides="3"}}
 
{{pager:list}}
{{pager:current}}<b><a href="{$href}">{$number}</a></b>{{/pager:current}}
{{pager:number}}<a href="{$href}">{$number}</a>{{/pager:number}}
{{pager:elipses}}...{{/pager:elipses}}
{{pager:separator}}-{{/pager:separator}}
{{/pager:list}}
 
{{/pager:navigator}} 

Выведет приблизительно вот такой pager:

 1-2-3...6-7-8-9-10...15-16-17