Достаточно простая задача, которая, на данный момент, не освещена в документации.
Есть некий раздел в джеме, в нем пара сотен документов, нужно организовать постраничный вывод.
Обращаться каждый раз к базе, с учетом общего количества документов, не хочется.
Решение, как и все гениальное, очень просто: собираем с помощью оператора foreach файлы для кадой страницы, и подгружаем нужный в зависимости от параметра в get-запросе:
<?php <set itemsPerPage = 10> <foreach name="x" path="<#_path#>.$" sort="-_sort"> <set pageNumber = ((<foreach[x]._count> + <var[itemsPerPage]> - 1) / <var[itemsPerPage]>) % 1000000> <file name="/content-html/pages/<#_id#>/<var[pageNumber]>.phtml"> <p><foreach[x]._name> <a href="<foreach[x]._url>">More...</a></p> </file> </foreach> $file = $_SERVER['DOCUMENT_ROOT'] . '/content-html/pages/<#_id#>/' . ( (int)$_GET['page'] ? (int)$_GET['page'] : 1) . '.phtml'; if(is_file($file)) { include($file); } ?>
Где itemsPerPage - количество элементов на странице; pageNumber - номер страницы, к которой относится документ.
Остаток от деления на 1000000 - это трикшот, который приходится делать в виду того, что в DJEM 2.0 операция деления может вернуть число с дробной частью (если вы пытаетесь таким образом сгенерировать 1000000 станиц, то вам явно что-то нужно менять ).
Собственно вот и все.