Skip to content

pbJson ​

Выводит JSON через инлайн-шаблон. Удобно для поля, которое хранит JSON — повторяемое поле, список «ключ-значение», галерея, — когда нужна разметка без цикла в шаблоне.

[[pbJson? &input=`[[+items]]` &tpl=`<li>[[+title]]</li>`]]

Параметры ​

ПараметрОписание
inputСтрока JSON или массив. Пустое значение возвращается как есть.
tplШаблон, который применяется к каждому элементу. &options — устаревшее написание того же: работает ещё одну мажорную версию и пишет строку в лог MODX.
outputSeparatorЧем склеивать элементы, по умолчанию \n.
toPlaceholderВывод уходит в плейсхолдер MODX, сниппет возвращает пустоту.

Плейсхолдеры ​

Внутри tpl работают оба написания, поэтому один и тот же шаблон годится и для MODX, и для Fenom:

[[+title]]    {$title}

Список объектов рендерится по разу на элемент, ключи элемента становятся плейсхолдерами. Одиночный объект рендерится один раз. В плоском списке скаляров каждое значение доступно как item:

[[pbJson? &input=`["red","green"]` &tpl=`<span>[[+item]]</span>`]]

Вложенные значения пропускаются, а не печатаются словом Array.

Он же модификатор ​

Тот же код стоит за модификатором |pbJson:

php
{$block->items | pbJson : '<li>{$title}</li>'}

Модификатору нужен сниппет

|pbJson зовёт этот сниппет по имени. Если пакет на сайте не устанавливали — например, файлы скопировали руками, — модификатор молча вернёт пустоту. В ранних сборках 3.0 это был настоящий баг: сниппеты не регистрировались вовсе.

Пример ​

Повторяемое поле items, в каждой строке title и url:

<ul>
    [[pbJson? &input=`[[+items]]` &tpl=`<li><a href="[[+url]]">[[+title]]</a></li>`]]
</ul>

© PageBlocks 2019-present