Показаны новости: с {$BeginItemNumber} по {$EndItemNumber}
Первая страница
{$number}
{$number}
Последняя страница
Всего новостей: {$TotalItems}
Центральный тег при постраничном разбиении - [[.:tags:pager_tags:pager_navigator_tag|
First Prev
[...]
Next Last
{$name}
{$description|default:" "|raw}
Для связи pager-а со списком можно применить следующий код:
$template = new WactTemplate('page.html');
$data = ...;// заполнение переменной data
$list = $template->findChild('modules');
$list->registerDataset($data); // Переводит $data в объектный вид, если необходимо
$pager = $template->getChild('pager', $dataset);
$dataset = $list->getDataset();
$pager->setPagedDataSet($dataset);
$dataset->paginate($pager->getStartingItem(), $pager->getItemsPerPage());
$template->display();
Если метод registerDataset() получает в качетве аргумента обычный массив, то он обворачивает его в WactArrayIterator, который поддерживает разбиение массива на страницы. В противном случае, аргумент метода registerDataset() должен поддерживать метод countPaginated() и paginate() для того, чтобы его можно было использовать с pager-ом (Базовые классы Limb поддерживают эти методы).
==== В шаблоне при помощи тега
First Prev
[...]
Next Last
{$name}
{$description|default:" "|raw}
Теперь наш php-скрипт можно сделать намного короче:
$template = new WactTemplate('page.html');
$data = ...;// заполнение переменной data
$template->setChildDataset('modules', $data);
$template->display();
Обратите внимание, что данные в списке должны быть до момента отработки тега
[...]
[...]
Здесь действует только одно условие - контейнер данных, который получается из fetcher-а должен поддерживать метод **paginate($offset, $limit)**. В большинстве случаев, если вы используете пакеты Limb (DATASOURCE или DBAL), вам об этом не нужно думать.
===== А если страниц очень много? =====
Если у вас слишком много страниц (ну скажем больше 20), то можно применить 2 варианта:
* Ввести разрывы (elipses) - когда отображаются страницы в начале, в середине и в конце списка страниц, а в остальных местах - пропуски. Это выглядит приблизительно так: 1-2-3...7-8-9-10-11...17-18-19
* Ввести секции (sections) - некоторые блоки страниц, которые показывают только начальную и конечную страницы блока. Только 1 секция активна в текущий момент. Это выглядит приблизительно так: [1-5]6-7-8-9-10[11-15][16-19].
см. также описание тега [[.:tags:pager_tags:pager_navigator_tag|
{$number}
{$number}
...
-
Выведет приблительно следующий pager:
1-2-3...6-7-8-9-10...15-16-17
==== Секции (sections) ====
Для вывода секций используется тег [[.:tags:pager_tags:pager_section_tag|
[{$number_begin}..{$number_end}]
{$number}
{$number}
-
Внутри тега
[1..5][6..10]11-12-13-14-15[16..17]
===== Отказ от вывода pager-а, если список содержит только 1 страницу =====
Тег [[.:tags:pager_tags:pager_navigator_tag|
Всего в списке : {$TotalItems}. Показаны элементы: от {$BeginItemNumber} до {$EndItemNumber}
[...]
===== Дополнительные примеры =====
* Очень подробный пример использования группы тегов Pager Tags приведен на странице описание тега [[.:tags:pager_tags:pager_navigator_tag|