pbList
Универсальный листер с пагинацией из коробки. Указываете модель и чанк — получаете постраничный список, не написав под него контроллер.
[[!pbList? &model=`PbResource` &parent=`[[*id]]` &tpl=`chunk:myItem` &limit=`10`]]Параметры
| Параметр | По умолчанию | Описание |
|---|---|---|
model | PbResource | Короткое имя модели, ищется в PageBlocks\App\Models\. Неизвестное имя пишется в лог, вывод пустой. |
tpl | Обязателен. Чанк одной строки, получает item. Префикс chunk: — чанк MODX. | |
parent | Сокращение для «принадлежит ресурсу N» (model_id = N). | |
parent_type | modDocument | Морф-класс владельца, если это не ресурс. |
where | Условия JSON-ом: {"template":4} или [["price",">=","100"]]. | |
scopes | published | Скоупы Eloquent через запятую. Пустое значение отключает. |
orderBy / sortby | menuindex | "menuindex", "menuindex desc" или JSON {"price":"desc"}. |
limit | 10 | Строк на страницу. |
class | d-flex flex-column gap-3 | CSS-классы обёртки. |
loadmore | Кнопка «показать ещё» вместо номеров страниц. | |
loadmoreLabel | Показать ещё | Надпись на кнопке. |
Что выводится
<div class="d-flex flex-column gap-3" id="pb-items"
data-pb-key="pblist_a1b2…" data-pb-total="137" data-pb-last-page="14">
<!-- строки через tpl -->
</div>
<div class="pb-pagination mt-4" pb-pagination>
<!-- номера страниц -->
</div>data-pb-key — хэш разобранного запроса, сам запрос лежит в кэше на сервере. Пагинация отправляет обратно только этот ключ, поэтому браузер не видит условий выборки и не может их подменить. Без JavaScript тоже работает: ссылки несут ?page=N, и сниппет отрабатывает на сервере заново.
Примеры
Дети текущего ресурса
[[!pbList? &parent=`[[*id]]` &tpl=`chunk:childItem` &limit=`20`]]Другая модель, с фильтром и сортировкой
[[!pbList?
&model=`PbVacancy`
&tpl=`chunk:vacancyCard`
&where=`{"city_id":7}`
&orderBy=`{"published_at":"desc"}`
&limit=`12`
]]«Показать ещё» вместо номеров страниц
[[!pbList? &parent=`[[*id]]` &tpl=`chunk:childItem` &loadmore=`1` &limit=`9`]]Из шаблона Fenom
Именованные параметры в стиле Smarty — через пробел, без скобок и без запятых:
{pbList model='PbResource' parent=$modx->resource->id tpl='childItem' limit=10}Здесь голый tpl означает файловый чанк core/App/elements/chunks/childItem.tpl.
Несуществующий чанк выводится пустотой
Отсутствующий шаблон — не ошибка: он даёт пустую строку и запись уровня DEBUG в логе MODX. Пустой список при ненулевом data-pb-total обычно означает опечатку в tpl.