Постраничный вывод (Пргинация) в ModxSmarty
Хочу выложить сюда пример вывода постраницно, т.к. изначально пришлось перелопатить исходники, чтобы понять как это работает Думаю будет полезно для других.
Итак. Сначала Шаблон вывода нумерованныйх страниц tpl/pagination.tpl
{pagination resource_id=$modx->resource->id items=$items limit=$limit current=$current_page prev_next=true assign=pagination} <div class="pagination"> {assign var=prev value=1} {if $pagination.prev.id} <a href="{$pagination.prev.href}">предыдущая</a> {/if} {foreach from=$pagination.pages item=page name=pagination} {if (($page.id-$prev) > 1)} <span>...</span> {/if} {if $page.type == 'current'} <span class="current">{$page.id}</span> {else} <a href="{$page.href}">{$page.id}</a> {/if} {assign var=prev value=$page.id} {/foreach} {if $pagination.next.id} <a href="{$pagination.next.href}">следующая</a> {/if} </div>
Что мы передаем в пагинатор:
resource_id — ID — ресурса, на котором выводится постраничный вывод. Обязательно. По-умолчанию почему то стоит «1», поэтому если не указать, то добавляет ?page=2 к корню сайта
items — Общее количество записей для вывода. Это значение будем получать в шаблоне самой страницы. см. ниже
current — текущая страница (присваиваем в шаблоне страницы)
limit — количество записей на странице (По умолчанию 5, но мы присвоим свое значение также в шаблоне страницы.
Теперь сам шаблон страницы tpl/news.tpl
{extends file="tpl/layout-white.tpl"} {block name=after_content} {assign var=limit value=7} {assign var=current_page value=$smarty.request.page|default:1} {assign var=params value=[ "where" => [ "parent" => $modx->resource->id ] ,"page"=>$current_page ,"limit"=>$limit ,"sort" => "publishedon" ,"dir" => "ASC" ,"includeTVs" => true ]} {processor action="site/web/getdata" ns="modxsite" params=$params assign=result} {assign var=items value=$result.total} {*include file="tpl/pagination.tpl"*} <ul id="news-list"> {foreach $result.object as $object} {assign var=atitle value=$object.pagetitle} {if $object.longtitle}{assign var=atitle value=$object.longtitle}{/if} <li> <h3><a href="{$object.uri}" title="{$atitle}">{$object.pagetitle}</a> </h3> <p>{$object.summary}</p> <div><small>{$object.publishedon|date_format:"%Y-%m-%d %H:%M:%S"}</small></div> </li> {/foreach} </ul> {include file="tpl/pagination.tpl"} {/block}
Тут в принципе интуитивно все понятно. Единственное что отмечу — это то откуда мы берем общее количество записей.
{assign var=items value=$result.total}