Skip to content

pbBlocks ​

Выводит блоки конструктора, прикреплённые к ресурсу, — то самое тело страницы, которое собрали в конструкторе.

[[!pbBlocks]]

Параметры ​

ПараметрПо умолчаниюОписание
parentтекущий ресурсЧьи блоки выводим — тем же именем владелец зовётся в pbList, pbResources и pbMenu. &resource — устаревший синоним, работает ещё одну мажорную версию и пишет в лог MODX.
limitВывести только первые N блоков.
offset0Пропустить первые N блоков.
tplЧанк, получающий каждый блок как item. Без него каждый блок рендерится своим чанком — тем, который задан в его конструкторе.
toPlaceholderВывод уходит в плейсхолдер MODX, сниппет возвращает пустоту.
showLogПечатает, почему ничего не вывелось; видно только в менеджере.
tplWrapperpageblocks.blocks.wrapperЧанк вокруг всего вывода. Работает и с tpl, и без него.

Плюс tplEmpty и outputSeparator — вот эти два только если задан tpl.

Обёртка — это дефолт, а не опция

tplWrapper — это контейнер .pb-page, и он единственное место, где объявлены токены компонента: --pb-content-max, --pb-section-gap и остальные из pb.blocks.css заданы на нём, а не на :root. Потеряли обёртку — каждый блок потерял размеры, по которым себя строит.

Поэтому она применяется на обоих путях вывода. Убрать её — когда страницу оборачивает сам шаблон сайта — можно явно переданным пустым значением: &tplWrapper=``​. Пустое значение означает «обёртки нет», а не «возьми дефолт»: сниппет смотрит, передали ли параметр вообще, а не пуст ли он.

На пустом списке блоков обёртки не будет в любом случае — лишнего пустого <div> в разметке не появится.

Как выбирается вывод ​

Без tpl сниппет зовёт у каждого блока его собственный render(), а тот берёт чанк из полей chunk и chunk_path. Это обычный случай: конструктор уже знает, как выглядит каждый блок.

С tpl вы берёте это на себя — удобно, когда те же блоки в другом месте нужны с другой разметкой или когда каждый надо во что-то завернуть.

Только опубликованное и только на своём языке ​

Сниппет ходит через связь blocks() ресурса, поэтому отдаёт блоки опубликованные (published_at заполнен и уже наступил), не удалённые мягко и относящиеся к текущему языку. Неопубликованный блок не попадёт на фронт без всяких дополнительных условий с вашей стороны.

Примеры ​

Тело текущей страницы ​

[[!pbBlocks]]

Блоки другой страницы ​

[[!pbBlocks? &parent=`15`]]

Сначала три блока, потом остальные ​

[[!pbBlocks? &limit=`3`]]
...
[[!pbBlocks? &offset=`3` &limit=`100`]]

Из Fenom ​

php
{foreach $modx->resource->blocks()->get() as $block}
    {$block->render()}
{/foreach}

Ничего не вывелось?

Сперва проверьте published_at у блоков, а уже потом маршруты и шаблоны — неопубликованный блок пропускается молча.

© PageBlocks 2019-present