Skip to content

pbList

Универсальный листер с пагинацией из коробки. Указываете модель и чанк — получаете постраничный список, не написав под него контроллер.

[[!pbList? &model=`PbResource` &parent=`[[*id]]` &tpl=`chunk:myItem` &limit=`10`]]

Параметры

ПараметрПо умолчаниюОписание
modelPbResourceКороткое имя модели, ищется в PageBlocks\App\Models\. Неизвестное имя пишется в лог, вывод пустой.
tplОбязателен. Чанк одной строки, получает item. Префикс chunk: — чанк MODX.
parentСокращение для «принадлежит ресурсу N» (model_id = N).
parent_typemodDocumentМорф-класс владельца, если это не ресурс.
whereУсловия JSON-ом: {"template":4} или [["price",">=","100"]].
scopespublishedСкоупы Eloquent через запятую. Пустое значение отключает.
orderBy / sortbymenuindex"menuindex", "menuindex desc" или JSON {"price":"desc"}.
limit10Строк на страницу.
classd-flex flex-column gap-3CSS-классы обёртки.
loadmoreКнопка «показать ещё» вместо номеров страниц.
loadmoreLabelПоказать ещёНадпись на кнопке.

Что выводится

html
<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 — через пробел, без скобок и без запятых:

php
{pbList model='PbResource' parent=$modx->resource->id tpl='childItem' limit=10}

Здесь голый tpl означает файловый чанк core/App/elements/chunks/childItem.tpl.

Несуществующий чанк выводится пустотой

Отсутствующий шаблон — не ошибка: он даёт пустую строку и запись уровня DEBUG в логе MODX. Пустой список при ненулевом data-pb-total обычно означает опечатку в tpl.

© PageBlocks 2019-present