Сниппет условных операций If, MODx Revo

При работе с MODx Revolution, если быть более точным при создании шаблонов, часто бывает необходимость добавления различных условий и вычислений на лету. Например, является ли эта страница Главной или страницей Контактов, если да, то вывести ссылку Карта сайта… Или для интернета магазина, если для документа указано значение TV-параметра с размером скидки, то вывести вместо обычной цены, цену со скидкой.

Сниппет условных операций для MODx Revolution — If

Для обработки условий в MODx’е есть стандартный сниппет If, который можно скачать через менеджер пакетов, приведу перевод мануала с rtfm.modx.com

Сниппет If может быть вызван с использованием тега:

[­[If]­]

или, в случае, когда ваш Главный параметр (subject) может измениться до того, как обновится кэш вашего ресурса:

[­[!If]­]

Доступные свойства

ИмяОписаниеЗначение по умолчанию
subject Главный параметр, значение над которым выполняются условия  
operator Оператор для с сравнения с главным параметром =
operand Операнд, если необходим — значение, которое надо сравнить с главным параметром, используя Оператор  
then Вывести это, если результат сравнения: true  
else Вывести это, если результат сравнения: false  
debug Если true, вывести все обработанные параметры 0
die Если debug and этот параметр true, выполнить die() после вывода всех параметров 0

Доступные операторы

ОператорОписание
!=,neq,not,isnot,isnt,unequal,notequal Выполняется если Главный параметр не равен Операнду.
==,=,eq,is,equal,equals,equalto Выполняется если Главный параметр равен Операнду.
<,lt,less,lessthan Выполняется если Главный параметр меньше Операнда.
>,gt,greater,greaterthan Выполняется если Главный параметр больше Операнда.
<=,lte,lessthanequals,lessthanorequalto Выполняется если Главный параметр меньше, либо равен Операнду.
>=,gte,greaterthanequals,greaterthanequalto Выполняется если Главный параметр больше, либо равен Операнду.
isempty,empty Выполняется если Главный параметр пустой.
!empty,notempty,isnotempty Выполняется если Главный параметр не пустой.
isnull,null Выполняется если Главный параметр имеет значение null.
inarray,in_array,ia Выполняется если Главный параметр находится в списке перечисленном через запятую в Операнде.

Примеры

Цифровое сравнение:

[­[!If? &subject=`[­[+total]­]` &operator=`GT` &operand=`3` &then=`У вас больше чем 3 штуки!`]­]

Строковое сравнение:

[­[!If?
   &subject=`[­[+name]­]`
   &operator=`EQ`
   &operand=`George`
   &then=`Hey George! Long time no see!`
   &else=`You’re not George. Go away.`
]­]
 Встроенный вызов сниппета:
 
[­[!If?
   &subject=`[­[+modx.user.id]­]`
   &operator=`EQ`
   &operand=`0`
   &then=`[­[Login]­]`
   &else=`[­[Logout]­]`
]­]

Проверка поля ресурса или TV-параметра (или любого другого значения, которое не поменяется до обновления кэша ресурса) во время вызова сниппета If , убедитесь, что используете кэшируемый вызов сниппета для проверки условия, чтобы не было необходимости выполнять эту проверку при каждом запросе.

[­[If?
   &subject=`[­[*hidemenu]­]`
   &operator=`EQ`
   &operand=`1`
   &then=`Этот ресурс невидим в меню.`
   &else=`Этот ресурс показывается в меню в точке [­[*menuindex]­].`
]­]