В MODX Revo есть сниппет If, очень полезная штука, если штатных средств не достаточно. Но бывает что и сниппета If тоже не достаточно. Когда нужно задать довольно сложные условия.
Попробую проиллюстрировать свою задачу:


и подобные условия нужно определить для всех товаров и их папок.

По всему интернет магазину в правом столбике сайта идет «барабан» где располагается самая ходовая продукция, товары в «барабане» отображаются с помощю сниппета getResources

[[getResources?
&includeContent=`1`
&includeTVs=`1`
&tpl=`ver.carusel.tpl.2013`
&resources=`[[$vmenuid]]`
&limit=`0`
&parents=`-1`
]]


моя задача состояла в том чтобы запрограммировать чанк vmenuid, так чтобы выводился нужный товар в нужных разделах и страницах (пример таких условий указан на схеме)
И вместо того чтобы можно было написать:

[[If? &subject=`[[*parent]]`
&operator=`ia`
&operand=`21,132,133`

&andif=`1` (было бы не плохо расширить функционал сниппета If такой штукой)

&subject=`[[*id]]`
&operator=`ia`
&operand=`21,132,133`

&then=`[[$vmenuid-inner]]`
&else=`295,296`
]]


где
&andif=`1` — выдуманный мною — вымышленный, и не рабочий параметр, наличие которого облегчило наверное мою жизнь.
[[*parent]] — id родительского документа.
&operator=`ia` — «in array» соответствует ли одному из значений в массиве, условие при котором срабатывает &then.
[[$vmenuid-inner]] это тоже набор условий If, код которого приведен ниже.
Числа это id необходимых для вывода документов
&else=`295,296` — набор id выводимых по умолчанию, через запятую можно вывести сколько угодно

Рабочая замена And if — вложенный if

Пришлось методом проб и ошибок, придумывать работающую аналогию:

[[If? &subject=`[[*parent]]`
&operator=`ia`
&operand=`21,132,133`

&then=`[[$vmenuid-inner]]`
&else=`
[[If? &subject=`[[*id]]`
&operator=`ia`
&operand=`21,132,133`
&then=`[[$vmenuid-inner]]`
&else=`295,296`
]]
`
]]


привожу фрагмент кода чанка vmenuid-inner (если выводить без чанка, работать не будет)

[[If? &subject=`[[*parent]]`
&operand=`21`
&then=`280,222` ]]
[[If? &subject=`[[*id]]`
&operand=`21`
&then=`280,300` ]]
[[If? &subject=`[[*parent]]`
&operand=`133`
&then=`110,150` ]]
[[If? &subject=`[[*id]]`
&operand=`133`
&then=`110,111` ]]


Если есть более изящное решение, я его не нашел.

Литература:
http://rtfm.modx.com/display/ADDON/If