Modx revo параметры if – [EVO] IF — вторая попытка сделать нормальный снипет на замену PHx / Готовые дополнения для MODX / MODX.im

Конструкция условий 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]].`
]]

MODX ➨ условия if-else: примеры использования

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 | Просмотров: 1279

Фильтры phx ( модификаторы ) в modx revo

cat Добавляет к тегу строку. [[+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=``]]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *