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:
{$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>