Конструкция условий if else в MODx
В Modx есть собсвенные средства для проверок, т.к он не поддерживает PHP «в открытом виде»
В самом начале я напишу 2 проверки, которые я использую постоянно
Чтобы составить условие на существование в БД параметра modx и при условие, что оно не пустое, то пишем следующий скрипт
[ [*id:gt=`0`:then=`Книги в наличии!`:else=`Простите, но все продано.`] ]
Проверка на значение: Если id равен 5, то выводим значение, иначе выполняем другое дейсвтие
[ [*id:is=`5`:then=`номер 5`:else=`номер не 5`] ]
В 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`]] |
Также для особых случаев существует модуль — сниппет, называется он IF
Использование
Сниппет If может быть вызван с использованием тегов:
[ [If]]
или, в случае, если объект может быть изменен до того, как кэш ресурса будет очищен, используйте не кэшируемый синтаксис:
[ [!If]]
Доступные свойства
Имя |
|
Значение “по умолчанию“ |
subject |
Параметр, над значением которого выполняются условия. |
|
operator |
Оператор сравнения с subject |
= |
operand |
Используется при необходимости, значение для сравнения subject и operator. |
|
then |
Выводится, если состояние принимает значение true |
|
else |
Выводится, если состояние принимает значение false |
|
debug |
Если значение true, отображает все проверенные свойства |
0 |
die |
Если прошло обработку debug и значение 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 равен 0 |
inarray,in_array,ia |
Принимается если subject найден в списке операндов (строковый параметр, разделитель — запятая) |
Примеры
Сравнение чисел:
[ [!If? &subject=`` &operator=`GT` &operand=`3` &then=`You have more than 3 items!`]]
Сравнение строк:
[ [!If? &subject=`` &operator=`EQ` &operand=`George` &then=`Hey George! Long time no see!` &else=`You're not George. Go away.` ]]
Встраиваемый вызов сниппета
[ [!If? &subject=`0` &operator=`EQ` &operand=`0` &then=`` &else=`` ]]
При использовании сниппета IF для проверки поля ресурса или шаблонной переменной (или другого значения, не измененного до очистки кэша), убедитесь, что используете кэшируемый вызов сниппета для проверки состояния. Это нужно, чтобы быть уверенным, что этот процесс не нужен при каждом запросе.
[ [If? &subject=`` &operator=`EQ` &operand=`1` &then=`This resource is not visible in the menu.` &else=`This resource shows up in the menu in spot 3.` ]]
Скачиваем и устанавливаем пакет IF
Например, нам нужно что бы слайдер отображлся только на главной странице, с id=1, тогда вставляем в шаблон:
[ [If? &subject=`38` &operator=`EQ` &operand=`1` &then=«]]
или через модификаторы
[ [*id:is=`1`:then=«:else=«]]
Еще например, нам надо что бы выводился ЗАГОЛОВОК, если РАСШИРЕННЫЙ ЗАГОЛОВОК пуст, тогда вписываем:
[ [If? &subject=« &operator=`notempty` &then=«&else=`Конструкция условий if else в MODx` ]]
или
[ [*longtitle:is=«:then=`Конструкция условий if else в MODx`:else=«]]
Параметры IF для MODX REVO:
- subject — самый важный параметр, его сравниваем
- operator — каким образом сравниваем, по умолчанию =
- operand — с чем сравниваем
- then — что выводим, если верно
- else — что выводим, если ложно
- debug — выводим все обработанные параматры, если true
- die — если этот и прошлый параметр true, то выполняется die() после вывода всех параметров
Операторы IF:
- neq — не равно
- eq — равно
- lt — меньше
- gt — больше
- lte — меньше, либо равен
- gte — больше, либо равен
- isempty — выполняется если парамер пустой
- notempty — если не пустой
- null — если параметр имеет значение 0
- inarray — Выполняется если Главный параметр находится в списке, перечисленном через запятую, в Операнде
Использование условий if else в MODx
В 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 (строка разделённая запятой) |
Комментарии (0)
IF MODX Revolution условия
Что такое if?
Условный логический сниппет, обеспечивающий выполнение условных выражений в MODx
История создания
IF написан Джейсоно Ковардом (Jason Coward), известным как opengeek, и Шоном Маккормиком, известным как splittingred и опубликован 29 октября 2009.
Загрузка
Вы можете загрузить ПО с помощью менеджера MODx Revolution, используя Package Management, или из хранилища дополнений MODx.
Использование
Сниппет If может быть вызван с использованием тегов:
[[If]]
или, в случае, если объект может быть изменен до того, как кэш ресурса будет очищен, используйте не кэшируемый синтаксис:
[[!If]]
Доступные свойства
Имя |
Описание |
Значение “по умолчанию“ |
subject |
Параметр, над значением которого выполняются условия. |
|
operator |
Оператор сравнения с subject |
= |
operand |
Используется при необходимости, значение для сравнения subject и operator. |
|
then |
Выводится, если состояние принимает значение true |
|
else |
Выводится, если состояние принимает значение false |
|
debug |
Если значение true, отображает все проверенные свойства |
0 |
die |
Если прошло обработку debug и значение 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 равен 0 |
inarray,in_array,ia | Принимается если subject найден в списке операндов (строковый параметр, разделитель — запятая) |
Примеры
Сравнение чисел:
[[!If? &subject=`[[+total]]` &operator=`GT` &operand=`3` &then=`You have more than 3 items!`]]
Сравнение строк:
[[!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]]` ]]
При использовании сниппета IF для проверки поля ресурса или шаблонной переменной (или другого значения, не измененного до очистки кэша), убедитесь, что используете кэшируемый вызов сниппета для проверки состояния. Это нужно, чтобы быть уверенным, что этот процесс не нужен при каждом запросе.
[[If? &subject=`[[*hidemenu]]` &operator=`EQ` &operand=`1` &then=`This resource is not visible in the menu.` &else=`This resource shows up in the menu in spot [[*menuindex]].` ]]
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=`5`:or:is=`6`:then=`номер 5 или 6`:else=`другое`]] |
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=`Ошибка`]] |
isequalto, isequal, equalto, equals, is, eq | Сравнивает передаваемое значение с установленным. Если значения совпадают, выводится значение «then», если нет — «else» |
[[*id:is=`5`:then=`номер 5`:else=`номер не 5`]] |
notequalto, notequals, isnt, isnot, neq, ne | Сравнивает передаваемое значение с установленным. Если значения НЕ совпадают, выводится значение «then», если нет — «else» |
[[*id:is=`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 или больше`]] |
memberof, ismember, mo | Проверяет, является ли пользователь членом указанной группы пользователей | [[+modx.user.id:memberof=`Administrator`]] |
Условия в MODx Revo сниппет IF
Что такое IF?
Условный логический сниппет, обеспечивающий выполнение условных выражений в MODx
История создания
IF написан Джейсоно Ковардом (Jason Coward), известным как opengeek, и Шоном Маккормиком, известным как splittingred и опубликован 29 октября 2009.
Загрузка
Вы можете загрузить ПО с помощью менеджера MODx Revolution, используя Package Management, или из хранилища дополнений MODx.
Использование
Сниппет If может быть вызван с использованием тегов:
[[If]]
или, в случае, если объект может быть изменен до того, как кэш ресурса будет очищен, используйте не кэшируемый синтаксис:
[[!If]]
Доступные свойства IF
Имя | Описание | Значение «по умолчанию» |
---|---|---|
subject | Параметр, над значением которого выполняются условия. | |
operator | Оператор сравнения с subject | = |
operand | Используется при необходимости, значение для сравнения subject и operator. | |
then | Выводится, если состояние принимает значение true | |
else | Выводится, если состояние принимает значение false | |
debug | Если значение true, отображает все проверенные свойства | 0 |
die | Если прошло обработку debug и значение true, после отображения свойств вывести die(). | 0 |
Доступные операторы IF
Оператор | Описание |
---|---|
!=,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 равен 0 |
inarray,in_array,ia | Принимается если subject найден в списке операндов (строковый параметр, разделитель — запятая) |
Примеры IF
[[
!If?
&subject=`[[+total]]`
&operator=`GT`
&operand=`3`
&then=`You have more than 3 items!`
]]
Сравнение строк:
[[!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]]`
]]
При использовании сниппета IF для проверки поля ресурса или шаблонной переменной (или другого значения, не измененного до очистки кэша), убедитесь, что используете кэшируемый вызов сниппета для проверки состояния. Это нужно, чтобы быть уверенным, что этот процесс не нужен при каждом запросе.
[[If?
&subject=`[[*hidemenu]]`
&operator=`EQ`
&operand=`1`
&then=`This resource is not visible in the menu.`
&else=`This resource shows up in the menu in spot [[*menuindex]].`
]]
Голосов: 156 | Просмотров: 1279cat | Добавляет к тегу строку. | [[+num:cat=` раз`]], выведет к примеру «10 раз». |
lcase, lowercase, strtolower | Переведет значение тега в нижний регистр, аналогично функции php strtolower. | [[*pagetitle:lcase]] |
ucase, uppercase, strtoupper | Переведет текст в верхний регистр, аналогично функции php strtoupper. | [[*pagetitle:ucase]] |
ucwords | Переведет каждую первую букву, каждого слова в верхний регистр, аналогично функции php ucwords. | [[*pagetitle:ucwords]] |
ucfirst | Переведет только первую букву строки в верхний регистр, аналогично функции php ucfirst. | [[*pagetitle:ucfirst]] |
htmlent, htmlentities | Преобразует все символы в соответствющие HTML сущности (для тех символов, для которых HTML сущности существуют), аналогично функции php htmlentities. Использует текущие настройки системы «modx_charset» с флагом «ENT_QUOTES». | [[*pagetitle:htmlentities]] |
esc,escape | Экранирует разные «плохие символы», так же экранирует [, ] и `. | [[*content:esc]] |
strip | Заменяет все переносы строк, табуляции и множественные пробелы с на один пробел. | [[*content:strip]] |
stripString | Вырезает из строки заданную строку. | [[*pagetitle:stripString=`вц`]] |
replace | Обычная замена. | [[*pagetitle:replace=`вц==конфетка`]] |
striptags, stripTags,notags,strip_tags | Вырезает все теги, кроме разрешенных, аналогично функции php strip_tags | [[*longtitle:strip_tags=` `]] |
len,length, strlen | Возвращает длину строки, аналогично функции php strlen | [[*longtitle:strlen]] |
reverse, strrev | Переворачивает строку, аналогично функции php strrev | [[*longtitle:reverse]] |
wordwrap | Устанавливает переносы в зависимости от кол-ва символов слова, аналогично функции php wordwrap | [[*pagetitle:wordwrap=`10`]] |
limit | Устанавливает лимит на длинну строки и обрезает ее. | [[*pagetitle:limit=`10`]] |
ellipsis | Устанавливает лимит на длинну строки и обрезает ее, добавляя три точки в конце | [[*pagetitle:ellipsis=`10`]] |
tag | Вернет, запись тега. | [[*pagetitle:ellipsis=`10`:tag]]вернет: [[*pagetitle:ellipsis=`10`:tag]] |
add, increment, incr | Вернет, значение + модификатор ( по умолчанию +1 ). | [[+num:incr]] или [[+num:add=`97`]] |
subtract, decrement, decr | Вернет, значение — модификатор ( по умолчанию -1 ). | [[+num:decr]] или [[+num:decr=`97`]] |
multiply, mpy | Вернет, значение * модификатор ( по умолчанию *2 ). | [[+num:mpy]] или [[+num:mpy=`5`]] |
divide, div | Вернет, значение / модификатор ( по умолчанию /2 ). | [[+num:div]] или [[+num:div=`5`]] |
modulus, mod | Вернет, целочисленный остаток от деления значения на модификатор ( по умолчанию % 2. Вернет 1 или 0. ) | [[+num:mod]] или [[+num:mod=`5`]] |
ifempty, default, empty, isempty | Вернет, указанный модификатор, если значение пусто. | [[*pagetitle:empty=`Пусто`]] |
notempty, !empty, ifnotempty, isnotempty | Вернет, указанный модификатор, если значение не пусто. | [[*pagetitle:!empty=`Не пусто!`]] |
nl2br | Вернет строку с «<br />» или «<br>» вставленные перед всеми (\r\n, \n\r, \n и \r)…, аналогично функции php nl2br | [[*pagetitle:nl2br]][[*pagetitle:nl2br]] |
date | Аналогично функции PHP strftime. Значение — отформатировано. См. форматы дат. | [[+birthyear:date=`%Y`]] |
strtotime | Аналогично функции PHP strtotime. Вернет дату. См. форматы дат. | [[*createdon:strtotime]], — вернет типа «[[*createdon:strtotime]]» |
fuzzydate | Вернет дату. Типа вчера, сегодня…. | [[*createdon:fuzzydate]], — вернет типа «[[*createdon:fuzzydate]]» |
ago | Вернет дату в прошедших секундах, минутах, неделях или месяцах. | [[*createdon:ago]], — вернет типа «[[*createdon:ago]]» |
md5 | Аналогично функции php md5. | [[+password:md5]]. |
cdata | Вставляет строку в оболочку «CDATA» тегов. | [[*pagetitle:cdata]]. |
userinfo | Возвращает запрошенные модификаторов данные о пользователе. Значение должно быть id-пользователя ( modUser ). | [[+modx.user.id:userinfo=`username`]]. |
isloggedin | Возвращает true, если пользователь авторизирован в этом контексте. | [[+modx.user.id:isloggedin]]. |
isnotloggedin | Возвращает true, если пользователь не авторизирован в этом контексте. | [[+modx.user.id:isnotloggedin]]. |
toPlaceholder | Помещает результат вывода тега в плейсхолдер, причем там где был помещен — ничего не выводится, а телепортируется в указанный плейсхолдер. До этого модификатора можно использовать любые другие модификаторы. | [[+number:toPlaceholder=`итого`]], помещает содержимое [[+number]] в плейсхолдер [[+итого]]. Можно усложнять запись добавляя в левую часть выражения любые другие модификаторы: [[+number:is=`10`:then=`ровно 10`:else=`точно не 10!`:toPlaceholder=`итого`]], если [[+number]] = 10, тогда выводим в плейсхолдер [[+итого]]: «ровно 10», если же нет «точно не 10!». |
cssToHead | Прописывает файл CSS в <link> элемент перед закрывающим тегом </head>, где значение тега модификатора вписывается в аттрибут «href». Используется modX.regClientCSS. | [[+cssTV:cssToHead]] перед закрывающим тегом </head>, регистрирует CSS, например: <link rel=»stylesheet» href=»значение +cssTv» type=»text/css» /> |
htmlToHead | Вписывает значение тега перед закрывающим тегом </head>. Используется modX.regClientStartupHTMLBlock. | [[+htmlTV:htmlToHead ]] перед закрывающим тегом </head>, регистрирует значение тега [[+htmlTV]] в HTML код. |
htmlToBottom | Вписывает значение тега перед закрывающим тегом </body>. Используется modX.regClientHTMLBlock. | [[+htmlTV:htmlToBottom]] перед закрывающим тегом </body>, регистрирует значение тега [[+htmlTV]] в HTML код. |
jsToHead | Прописывает файл JS в <link> элемент перед закрывающим тегом </head>. Используется modX.regClientStartupScript. | [[+jsTV:jsToHead]] перед закрывающим тегом </head>, регистрирует JS, например: <script type=»text/javascript» src=»значение +jsTv»></script> |
jsToBottom | Прописывает файл JS в <link> элемент перед закрывающим тегом </body>. Используется modX.regClientScript. | [[+jsTV:jsToBottom]] перед закрывающим тегом </body>, регистрирует JS, например: <script type=»text/javascript» src=»значение +jsTv»></script> |
urldecode | Аналогично функции php urldecode. | [[+stringi:urldecode]]. |
Сниппет IF modx evo
Очень часто появляется необходимость разветвить алгоритм в зависимости от определенных условий. К примеру, проверить имеется ли заполненное изображение у товара, и вывести его, иначе вывести изображение «пустышку». С такой задачей справляется «условный» сниппет IF.
Для любого программиста не составит труда разобраться с синтаксисом сниппета, поскольку он полностью схож с условным оператором if в любом языке программирования.
[ [if? &is=`` &then=`` &else=``]]
Параметры сниппета if
Теперь рассмотрим параметры сниппета IF:
- is — параметр, отвечающий за сравнение.
Формат параметра is: &is=`75:=:1` (что сравниваем:как сравниваем:с чем сравниваем) - then – параметр для вывода содержимого, если условие истина.
Формат параметра then: &then=`asc` - else — параметр для вывода содержимого, если условие ложь
Формат параметра else: &else=`desc` - math – включает выполнение математических функций в параметре is
Формат параметра math: &math=`on` - separator – разделитель в условии, по умолчанию `:`.
Формат параметра separator: &separator=`~`
Операторы сравнения
- is, = — равно;
- not, != — не равно;
- gt, > — большей;
- lt, < — меньше;
- gte, >= — больше или равно;
- lte, <= — меньше или равно;
- isempty, empty – если пусто;
- not_empty, !empty – не пусто;
- null, is_null – является ли значение равным NULL;
- in_array, inarray, in – имеется ли значение в массиве;
- not_in, !in – отсутствует ли значение в массиве.
Практическое применение сниппета if
[ [if? &is=`75:=:1` &then=`asc` &else=`desc`]]
[ [if? &is=`:empty` &then=`/assets/templates/img/nophoto.jpg` &else=``]]