digitorum.ru

Как меня найти

Профиль

icq: 4415944

Что такое djem и с чем его едят: простой paginator

DJEM, DJEM 2.0, djemscript

Достаточно простая задача, которая, на данный момент, не освещена в документации. 

Есть некий раздел в джеме, в нем пара сотен документов, нужно организовать постраничный вывод. 

Обращаться каждый раз к базе, с учетом общего количества документов, не хочется. 

Решение, как и все гениальное, очень просто: собираем с помощью оператора 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 станиц, то вам явно что-то нужно менять ). 

 

Собственно вот и все.