В MODx существуют встроенный синтаксис для использования конструкций if else.
Модификаторы вывода
В таблице представлены некоторые модификаторы и примеры их использования. В примерах модификаторы применяются к плейсхолдерам, но вы должны помнить, что они могут применяться к любым тегам MODX. Убедитесь, что используемый тег выводит хоть что-то, что модификатор будет обрабатывать.
Условные модификаторы вывода
| Модификатор | Описание | Пример использования |
| if, input | if - задает дополнительное условие input - добавляет в тег обратываемые данные | [ [*id:is=`1`:and:if=`[ [*id]]`:ne=`2`:then=`da`:else=`net`]] |
| or | Объединение нескольких модификаторов связью ИЛИ |
[ [*id:is=`5`:or:is=`6`:then=`номер 5 или 6`:else=`другой номер`]] |
| and | Объединение нескольких модификаторов связью И | [ [*id:is=`1`:and:if=`[ [*id]]`:ne=`2`:then=`da`:else=`net`]] |
| isequalto, isequal, equalto, equals, is, eq | Сравнивает передаваемое значение с установленным. Если значения совпадают, выводится значение «then», если нет - «else» |
[ [*id:is=`5`:then=`номер 5`:else=`номер не 5`]] |
| notequalto, notequals, isnt, isnot, neq, ne | Сравнивает передаваемое значение с установленным. Если значения НЕ совпадают, выводится значение «then», если нет - «else» |
[ [*id:isnot=`5`:then=`номер не 5`:else=`видимо номер 5`]] |
| greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte | То же, только условие «Больше или равно» |
[ [*id:gte=`5`:then=`номер 5 или больше`:else=`меньше пятого номера`]] |
| isgreaterthan, greaterthan, isgt, gt | То же, только условие «Строго больше» |
[ [*id:gt=`5`:then=`номер больше пяти`:else=`номер 5 или меньше`]] |
| equaltoorlessthan, lessthanorequalto, el, le, islte, lte | То же, только условие «Меньше или равно» |
[ [*id:lte=`5`:then=`номер 5 или меньше`:else=`больше, чем номер 5`]] |
| islowerthan, islessthan, lowerthan, lessthan, islt, lt | То же, только условие «Строго меньше» |
[ [*id:lte=`5`:then=`номер точно меньше 5`:else=`номер 5 или больше`]] |
| hide | Скрывает элемент, если условие выполняется |
[ [*id:lt=`1`:hide]] |
| show | Отображает элемент, если условие выполняется |
[ [*id:gt=`0`:show]] |
| then | Используется для составления условий |
[ [*id:gt=`0`:then=`Книги в наличии!`]] |
| else | Используется для составления условий (совместно с «then») |
[ [*id:gt=`0`:then=`Книги в наличии!`:else=`Простите, но все продано.`]] |
| select | Установить свое значение, в зависимости от модификатора и вывода тега. Так же можно использовать "else", например если значение [ [+controls]] - не подходит под шаблон select | [ [+controls:select=`0=ВЫКЛ&1=ВКЛ&2=ХЗ`:else=`Ошибка`]] |
| memberof, ismember, mo | Проверяет, является ли пользователь членом указанной группы пользователей |
[ [+modx.user.id:memberof=`Administrator`]] |
Также фильтры могут применяться для модификации вывода сниппетов. Фильтр нужно прописывать перед всеми параметрами (перед знаком вопроса):
[ [mySnippet:modifier=`value`? &mySnippetParam=`something`]]
Также для того что бы иметь возможность пользоваться вложеными конструкциями можно воспользоваться дополнительным пакетом, который имеет короткое и емкое название If. Загрузить его можно зайдя в Система-> Управление пакетами.
Так будет выглядить код условия:
[ [!If? &subject=`[ [+total]]` &operator=`GT` &operand=`3` &then=`You have more than 3 items!`]]
Параметры пакета if:
subject - Параметр, по которому выполняются условия.
operator - Оператор сравнения с subject
operand - Используеться по необходимости и являет собой значение subject (предмета сравнения) с использованием operator (оператора сравнения).
then - Код, который выводиться в том случае если условие принимает значение true
else - Код, который выводиться в том случае если условие принимает значение false
debug - Если значение true, отобразит все переданные параметры
die - Если отладка (debag) прошла успешно и соответствует значению true, то после вывода параметров применить функцию die().
Параметры
| Название | Описание | По умолчания |
| subject | Параметр, по которому выполняются условия. | |
| operator | Оператор сравнения с subject | = |
| operand | Используеться по необходимости и являет собой значение subject (предмета сравнения) с использованием operator (оператора сравнения). |
|
| then | Код, который выводиться в том случае если условие принимает значениеtrue |
|
| else | Код, который выводиться в том случае если условие принимает значениеfalse |
|
| debug | Если значение true, отобразит все переданные параметры |
0 |
| die | Если отладка (debag) прошла успешно и соответствует значению true, то после вывода параметров применить функцию die(). |
0 |
Операторы:
| Название: | Описание: |
| !=,neq,not,isnot,isnt,unequal,notequal | Проверяет если subject не равен указанному значению operand |
| ==,=,eq,is,equal,equals,equalto | Проверяет если subject равен указанному значению operand |
| <,lt,less,lessthan | Проверяте если subject меньше указанного значения operand |
| >,gt,greater,greaterthan | Проверяет если subject больше указанного значения operand |
| <=,lte,lessthanequals,lessthanorequalto | Проверяет если subject меньше или равно указанного значения operand |
| >=,gte,greaterthanequals,greaterthanequalto | Проверяет если subject больше или равно указанного значения operand |
| isempty,empty | Проверяет если subject имеет пустое значение |
| !empty,notempty,isnotempty | Проверяет если subject имеет какое-либо значение |
| isnull,null | Проверяет если subject равен null |
| inarray,in_array,ia | Проверяет если subject найден в списке operand (строка разделённая запятой) |