Сниппет If

Опубликовано: 09 Сен 2014

При работе с MODx Revolution, если быть более точным при создании шаблонов, часто бывает необходимость добавления различных условий и вычислений на лету.
Сниппет условных операций для 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]].`
]]

Комментарии (0)


Оставить комментарий




Разрешённые теги: <b><i><br>Добавить новый комментарий: