conditionalTpls

Не все знают, что в getResources есть возможность использовать разные чанки, в зависимости от значения в каком-то одном поле ресурса.

Например, если не заполнен introtext, можно указать чанк без его использования. Проверять можно не только на пустоту, но на равенство, больше, меньше и null.

Для этого используются 3 параметра:
&tplCondition — Поле ресурса, из которого будет получено значение для выбора чанка по условию в «conditionalTpls». Например: introtext или published.
&tplOperator— Оператор сравнения, возможный список:

==, !=, < , > , <=, >=, empty, !empty, isnull

&conditionalTpls — JSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться «tplCondition», а в значениях — чанки, которые будут использованы для вывода, если сравнение будет успешно.

Как это работает? Рассмотрим на примере:

[­[!pdoResources?
&parents=`2`
&tpl=`chunk1`
&tplCondition=`template`
&tplOperator=`==`
&conditionalTpls=`{"2":"chunk2", "5":"chunk5"}`
]­]

В результате работы, все ресурсы с шаблонами 3 и 5 будут вывеедены в собственных чанках, а все остальные — в chunk1.

Для проверки на пустоту можно указывать массивы без ключей:

[­[!pdoResources?
&parents=`2`
&tpl=`chunk1`
&tplCondition=`introtext`
&tplOperator=`empty`
&conditionalTpls=`{"no_intro"}`
]­]

Для ресурсов с пустым introtext будет задействован чанк no_intro.