<?php $pages = $this->macros('system', 'numpages', array($variables['total'], $variables['per_page'])); ?>
Пример вызова
udata://system/numpages/20/5/
XML-ответ UData
Если параметр p
указывает на первую страницу (или отсутствует), выводятся только элементы toend_link
и tonext_link
.
udata://system/numpages/20/5/
<udata module="system" method="numpages" generation-time="0.000595">
<items>
<item link="?p=0" is-active="1">1</item>
<item link="?p=1" page-num="1">2</item>
<item link="?p=2" page-num="2">3</item>
<item link="?p=3" page-num="3">4</item>
</items>
<toend_link page-num="3">?p=3</toend_link>
<tonext_link page-num="1">?p=1</tonext_link>
</udata>
Если параметр указывает на середину списка (например страница 2 из 3), то выводятся все элементы: tobegin_link
, toend_link
, toprev_link
, tonext_link
.
udata://system/numpages/20/5/?p=1
<udata module="system" method="numpages" generation-time="0.000641">
<items>
<item link="?p=0">1</item>
<item link="?p=1" page-num="1" is-active="1">2</item>
<item link="?p=2" page-num="2">3</item>
<item link="?p=3" page-num="3">4</item>
</items>
<tobegin_link page-num="0">?p=0</tobegin_link>
<toend_link page-num="3">?p=3</toend_link>
<toprev_link page-num="0">?p=0</toprev_link>
<tonext_link page-num="2">?p=2</tonext_link>
<current-page>1</current-page>
</udata>
Если параметр p
указывает на последнюю страницу, выводятся только элементы tobegin_link
и toprev_link
.
data://system/numpages/20/5/?p=3
<udata module="system" method="numpages" generation-time="0.000606">
<items>
<item link="?p=0">1</item>
<item link="?p=1" page-num="1">2</item>
<item link="?p=2" page-num="2">3</item>
<item link="?p=3" page-num="3" is-active="1">4</item>
</items>
<tobegin_link page-num="0">?p=0</tobegin_link>
<toprev_link page-num="2">?p=2</toprev_link>
<current-page>3</current-page>
</udata>
Элементы и атрибуты
<item>
Элемент, описывающий параметры для постраничного вывода. Значение элемента — порядковый номер страницы при постраничном выводе.
- @link
-
Строка параметром и значением, для перехода на эту страницу.
- @page-num
-
Значение параметра, передающегося для перехода на страницы постраничного вывода. Этот же атрибут присутствует у следующих четырех элементов UData.
- @is-active
-
Указывает на текущую страницу постраничного вывода.
Вывод списка страниц осуществляется по шаблону, указанному в параметре template. Вы можете не указывать этот параметр, в этом случае для вывода свойства будет использован шаблон по умолчанию — default.tpl
.
Если общее количество страниц меньше, либо равно параметру per_page, то выводится блок pages_block_empty
Используемые блоки шаблона
pages_block
Выводит оформление для списка страниц.
- %pages%
-
Выводит список страниц.
- %tobegin%
-
Выводит блок pages_tobegin , либо pages_tobegin_a .
- %toprev%
-
Выводит блок pages_toprev , либо pages_toprev_a .
- %toend%
-
Выводит блок pages_toend , либо pages_toend_a .
- %tonext%
-
Выводит блок pages_tonext , либо pages_tonext_a .
- %tobegin_link%
-
Выводит ссылку на первую страницу.
- %toprev_link%
-
Выводит ссылку на предыдущую страницу.
- %toend_link%
-
Выводит ссылку на последнюю страницу.
- %tonext_link%
-
Выводит ссылку на следующую страницу.
pages_block_empty
Используется в том случае, если общее количество страниц меньше, либо равно параметру per_page.
pages_item
Выводит отдельную страницу, если эта страница не является активной (текущей).
- %link%
-
Выводит ссылку на страницу.
- %num%
-
Выводит номер страницы.
- %quant%
-
Выводит разделитель, который вставляется между элементами списка страниц. Использует блок pages_quant .
- %list-class-first%
-
в случае, если элемент первый, выводит "first"
- %list-class-last%
-
в случае, если элемент последний, выводит "last"
- %list-class-odd%
-
в случае, если элемент четный, выводит "odd"
- %list-class-even%
-
в случае, если элемент нечетный, выводит "even"
- %list-position%
-
вставляет порядковый номер в списке
pages_item_a
Выводит отдельную страницу, если эта страница является активной.
- %link%
-
Выводит ссылку на страницу.
- %num%
-
Выводит номер страницы.
- %quant%
-
Выводит разделитель, который вставляется между элементами списка страниц. Использует блок pages_quant .
- %list-class-first%
-
в случае, если элемент первый, выводит "first"
- %list-class-last%
-
в случае, если элемент последний, выводит "last"
- %list-class-odd%
-
в случае, если элемент четный, выводит "odd"
- %list-class-even%
-
в случае, если элемент нечетный, выводит "even"
- %list-position%
-
вставляет порядковый номер в списке
pages_tobegin
Выводит блок с ссылкой на первую страницу, если текущая страница не первая.
- %tobegin_link%
-
Выводит ссылку на первую страницу.
pages_tobegin_a
Выводит блок с ссылкой на первую страницу, если текущая страница первая.
- %tobegin_link%
-
Выводит ссылку на первую страницу.
pages_toprev
Выводит блок с ссылкой на предыдущую страницу, если текущая страница не первая.
- %toprev_link%
-
Выводит ссылку на предыдущую страницу.
pages_toprev_a
Выводит блок с ссылкой на предыдущую страницу, если текущая страница первая.
- %toprev_link%
-
Выводит ссылку на предыдущую страницу.
pages_toend
Выводит блок с ссылкой на последнюю страницу, если текущая страница не последняя.
- %toend_link%
-
Выводит ссылку на последнюю страницу.
pages_toend_a
Выводит блок с ссылкой на последнюю страницу, если текущая страница последняя.
- %toend_link%
-
Выводит ссылку на последнюю страницу.
Примеры использования
<?php
$FORMS = Array();
$FORMS['pages_block'] = <<<END
<div>%tobegin% %toprev% %pages% %tonext% %toend%</div>
END;
$FORMS['pages_item'] = <<<END
<a href="%link%">%num%</a>%quant%
END;
$FORMS['pages_item_a'] = <<<END
<b>%num%</b>%quant%
END;
$FORMS['pages_quant'] = <<<END
   
END;
$FORMS['pages_block_empty'] = <<<END
END;
$FORMS['order_by'] = <<<END
<a href="%link%">%title%</a>
END;
$FORMS['order_by_a'] = <<<END
<span style="color: #000;"><b>%title%</b></span>
END;
$FORMS['pages_tobegin'] = <<<END
<a href="%tobegin_link%" id="tobegin">В начало</a>
END;
$FORMS['pages_tobegin_a'] = <<<END
END;
$FORMS['pages_toprev'] = <<<END
<a href="%toprev_link%" id="toprev">Предыдущая</a>
END;
$FORMS['pages_toprev_a'] = <<<END
END;
$FORMS['pages_toend'] = <<<END
<a href="%toend_link%" id="toend">В конец</a>
END;
$FORMS['pages_toend_a'] = <<<END
END;
$FORMS['pages_tonext'] = <<<END
<a href="%tonext_link%" id="tonext">Следующая</a>
END;
$FORMS['pages_tonext_a'] = <<<END
END;
?>
Название
%system numpages()% — Выводит список страниц при постраничном выводе.
Параметры: system numpages(total, per_page [, template = 'default', varName='p', maxPages='5'])
- total
-
Общее количество страниц.
- per_page
-
Количество страниц, выведенных на странице.
- template
-
Имя шаблона, по которому следует выводить список страниц.В XSLT-шаблонизаторе игнорируется.
- varName
-
Имя переменной, которая будет использоваться для задания номера страницы в URL в списке страниц. По умолчанию — символ "p". Например,
~/vse_novosti/?p=0
отобразит первую страницу ленты,~/vse_novosti/?p=1
— вторую страницу, и так далее.Внимание
Все макросы работающие с постраничным выводом принимают только значение по умолчанию. Поэтому, если не преследуются какие-либо специальные цели, менять этот параметр не рекомендуется.
- maxPages
-
Максимальное количество элементов в списке номеров страниц. Этот параметр ограничивает количество элементов списка страниц, выводимых макросом %pages% в шаблоне.
Описание
Макрос отвечает за построение списков страниц при постраничном выводе. Его можно использовать вместе с любым макросом, который осуществляет постраничный вывод и передает параметры total и per_page, которые необходимы для корректного вывода списка страниц.