pbJson
Выводит JSON через инлайн-шаблон. Удобно для поля, которое хранит JSON — повторяемое поле, список «ключ-значение», галерея, — когда нужна разметка без цикла в шаблоне.
[[pbJson? &input=`[[+items]]` &options=`<li>[[+title]]</li>`]]Параметры
| Параметр | Описание |
|---|---|
input | Строка JSON или массив. Пустое значение возвращается как есть. |
options | Шаблон, который применяется к каждому элементу. |
Плейсхолдеры
Внутри options работают оба написания, поэтому один и тот же шаблон годится и для MODX, и для Fenom:
[[+title]] {$title}Список объектов рендерится по разу на элемент, ключи элемента становятся плейсхолдерами. Одиночный объект рендерится один раз. В плоском списке скаляров каждое значение доступно как item:
[[pbJson? &input=`["red","green"]` &options=`<span>[[+item]]</span>`]]Вложенные значения пропускаются, а не печатаются словом Array.
Он же модификатор
Тот же код стоит за модификатором |pbJson:
{$block->items | pbJson : '<li>{$title}</li>'}Модификатору нужен сниппет
|pbJson зовёт этот сниппет по имени. Если пакет на сайте не устанавливали — например, файлы скопировали руками, — модификатор молча вернёт пустоту. В ранних сборках 3.0 это был настоящий баг: сниппеты не регистрировались вовсе.
Пример
Повторяемое поле items, в каждой строке title и url:
<ul>
[[pbJson? &input=`[[+items]]` &options=`<li><a href="[[+url]]">[[+title]]</a></li>`]]
</ul>