Условие в MODX, условие and if при помощи сниппета if в MODX. Условие в modx


Использование условий 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 (строка разделённая запятой)

bmweb.org

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

if, input or and
hide show then else select isequalto, isequal, equalto, equals, is, eq notequalto, notequals, isnt, isnot, neq, ne greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte isgreaterthan, greaterthan, isgt, gt equaltoorlessthan, lessthanorequalto, el, le, islte, lte islowerthan, islessthan, lowerthan, lessthan, islt, lt memberof, ismember, mo
if - задает дополнительное условие

input - добавляет в тег обратываемые данные

[[*id:is=`1`:and:if=`[[*id]]`:ne=`2`:then=`da`:else=`net`]]
Объединение нескольких модификаторов связью ИЛИ [[*id:is=`5`:or:is=`6`:then=`номер 5 или 6`:else=`другое`]]
Объединение нескольких модификаторов связью И [[*id:is=`5`:or:is=`6`:then=`номер 5 или 6`:else=`другое`]]
Скрывает элемент, если условие выполняется [[*id:lt=`1`:hide]]
Отображает элемент, если условие выполняется [[*id:gt=`0`:show]]
Используется для составления условий [[*id:gt=`0`:then=`Книги в наличии!`]]
Используется для составления условий (совместно с «then») [[*id:gt=`0`:then=`Книги в наличии!`:else=`Все продано`]]
Установить свое значение, в зависимости от модификатора и вывода тега.

Так же можно использовать "else", например если значение [ [+controls]] - не подходит под шаблон select

[[+controls:select=`0=ВЫКЛ&1=ВКЛ&2=ХЗ`:else=`Ошибка`]]
Сравнивает передаваемое значение с установленным.

Если значения совпадают, выводится значение «then», если нет - «else»

[[*id:is=`5`:then=`номер 5`:else=`номер не 5`]]
Сравнивает передаваемое значение с установленным.

Если значения НЕ совпадают, выводится значение «then», если нет - «else»

[[*id:is=`5`:then=`номер 5`:else=`номер не 5`]]
То же, только условие «Больше или равно» [[*id:gte=`5`:then=`номер 5 или больше`:else=`меньше пятого номера`]]
То же, только условие «Строго больше» [[*id:gt=`5`:then=`номер больше пяти`:else=`номер 5 или меньше`]]
То же, только условие «Меньше или равно» [[*id:lte=`5`:then=`номер 5 или меньше`:else=`больше, чем номер 5`]]
То же, только условие «Строго меньше» [[*id:lte=`5`:then=`номер точно меньше 5`:else=`номер 5 или больше`]]
Проверяет, является ли пользователь членом указанной группы пользователей [[+modx.user.id:memberof=`Administrator`]]

obninsksite.ru

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]].` ]]

www.modx.cc

Условие в MODX, как задать условие MODX, условие and if при помощи сниппета if в MODX

Столкнулся с проблемой при верстке сайта на MODX - у меня меню - иконки, причем когда я нажимаю на конкретную иконку она пропадает и под логотипом появляется надпись - название категории.

Первое что очевидно, но делать не хочется - множественные шаблоны, благо MODX это позволяет, но решение явно не изящное. Решение есть и это пакет MODX - "if". Устанавливаем его и теперь можно сделать следующие вещи:

[ [!If? &subject=`[ [*id]]` &operator=`in_array` &operand=`1` &then=`[ [$chank1]]`]][ [!If? &subject=`[ [*id]]` &operator=`in_array` &operand=`2` &then=`[ [$chank2]]`]]

В чанках нужный мне кусок кода меню)

Можно сразу код:

[ [!If? &subject=`[ [*id]]` &operator=`in_array` &operand=`2` &then=`(Пункт меню1),(Пункт меню3),(Пункт меню4)`]][ [!If? &subject=`[ [*id]]` &operator=`in_array` &operand=`2` &then=`(Пункт меню1),(Пункт меню2),(Пункт меню4)`]]

 Можно использовать условие (опять же что бы не плодить кучу шаблонов) для некликабельного Логотипа на главной странице:

[ [!If? &subject=`[ [*id]]` &operator=`in_array` &operand=`1` &then=`<img src="logo.png" alt="" />`&else=`<a href="http://site.ru/"><img src="logo.png" alt="" /></a>`]]

В двух словах что тут написано):

Первое - субъект, в нашем случае id и из оператора понятно что id наших документов, далее операнд - это конкретные id документа, либо документов через запятую)

Возможны также более сложные варианты:

[ [!If? &subject=`[ [*id]]` &operator=`in_array` &operand=`12,48` &then=`[ [!If? &subject=`[ [*id]]` &operator=`in_array` &operand=`1` &then=`действие1`]][ [!If? &subject=`[ [*id]]` &operator=`in_array` &operand=`2` &then=`действие2`]]`&else=`действие`]]

Очевидно что можно использовать как, например, для верхнего меню с активными классами, когда присутствует, например, боковое меню, выведенное через Wayfinder, так и довольно сложные схемы. Например для поднятия форума на MODX

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

about-cms.com

Замена условия «and If» с помощю сниппета логических операций «If» в MODX Revo

В MODX Revo есть сниппет If, очень полезная штука, если штатных средств не достаточно. Но бывает что и сниппета If тоже не достаточно. Когда нужно задать довольно сложные условия. Попробую проиллюстрировать свою задачу:

и подобные условия нужно определить для всех товаров и их папок. По всему интернет магазину в правом столбике сайта идет «барабан» где располагается самая ходовая продукция, товары в «барабане» отображаются с помощю сниппета getResources

[[getResources? &includeContent=`1` &includeTVs=`1` &tpl=`ver.carusel.tpl.2013` &resources=`[[$vmenuid]]` &limit=`0` &parents=`-1` ]]

моя задача состояла в том чтобы запрограммировать чанк vmenuid, так чтобы выводился нужный товар в нужных разделах и страницах (пример таких условий указан на схеме) И вместо того чтобы можно было написать:

[[If? &subject=`[[*parent]]` &operator=`ia` &operand=`21,132,133`

&andif=`1` (было бы не плохо расширить функционал сниппета If такой штукой)

&subject=`[[*id]]` &operator=`ia` &operand=`21,132,133`

&then=`[[$vmenuid-inner]]` &else=`295,296` ]]

где&andif=`1` — выдуманный мною — вымышленный, и не рабочий параметр, наличие которого облегчило наверное мою жизнь.[[*parent]] — id родительского документа.&operator=`ia` — «in array» соответствует ли одному из значений в массиве, условие при котором срабатывает &then.[[$vmenuid-inner]] это тоже набор условий If, код которого приведен ниже. Числа это id необходимых для вывода документов&else=`295,296` — набор id выводимых по умолчанию, через запятую можно вывести сколько угодно

Рабочая замена And if — вложенный if
Пришлось методом проб и ошибок, придумывать работающую аналогию: [[If? &subject=`[[*parent]]` &operator=`ia` &operand=`21,132,133`

&then=`[[$vmenuid-inner]]` &else=` [[If? &subject=`[[*id]]` &operator=`ia` &operand=`21,132,133` &then=`[[$vmenuid-inner]]` &else=`295,296` ]] ` ]]

привожу фрагмент кода чанка vmenuid-inner (если выводить без чанка, работать не будет)

[[If? &subject=`[[*parent]]` &operand=`21` &then=`280,222` ]] [[If? &subject=`[[*id]]` &operand=`21` &then=`280,300` ]] [[If? &subject=`[[*parent]]` &operand=`133` &then=`110,150` ]] [[If? &subject=`[[*id]]` &operand=`133` &then=`110,111` ]]

Если есть более изящное решение, я его не нашел.

Литература:http://rtfm.modx.com/display/ADDON/If

habr.com

IF MODX Revolution. IF обработка условий MODX Revolution

Под час работы с MODxRevolution, в случае если быть более точным, под час создании шаблонов, зачастую возникает надобность прибавления всевозможных условий и вычислений на лету. К примеру, считается ли эта страничка Главной либо страничкой Контактов, в случае если да, то вывести ссылку Карта сайта. Либо для интернета магазина, в случае если для документа предписано значение TV-параметра с размером скидки, то вывести вместо обыкновенной стоимости товаров, стоимость со скидкой. Для обработки условий в MODx’е имеется типичный сниппет If, который скачивается посредством менеджер пакетов, приведу перевод мануала сrtfm.modx.com СниппетIf вызвается с применением тега:

<code>[[If]]</code>или же, в случае, когда ваш Основной параметр (subject) может поменяться до того, как обновится кэш ресурса:<code>[[!If]]</code>Доступные характеристики Имя Описание Значение по умолчанию<code>subject Основной параметр, значение над которым исполняются условия operator Оператор для с сопоставления с основным параметром = operand Операнд, в случае если нужен — значение, которое нужно сопоставить с основным параметром, применяя Оператор then Вывести данное, в случае если результат сопоставления: true else Вывести данное, в случае если результат сопоставления: false debug В случае если true, вывести все подвергнутые обработке параметры 0 die В случае если debugand данный параметр true, исполнить die() после вывода всех параметров 0</code> Доступные операторы Оператор Описание<code> !=,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 Исполняется в случае если Главный параметр есть в списке перечисленном через запятую в Операнде.</code> Примеры

Цифровое сопоставление:

<code> [[!If? &subject=`[[+total]]` &operator=`GT` &operand=`3` &then=`У вас более нежели 3 штуки!`]]</code> Строковое сопоставление:<code>[[!If? &subject=`[[+name]]` &operator=`EQ` &operand=`George` &then=`Hey George! Long time no see!` &else=`You’re not George. Goaway.` ]]</code> Встроенный вызов сниппета:<code>[[!If? &subject=`[[+modx.user.id]]` &operator=`EQ` &operand=`0` &then=`[[Login]]` &else=`[[Logout]]` ]]</code> Проверка поля ресурса либо TV-параметра (либо всякого иного значения, которое не изменится до обновления кэша ресурса) под час вызова сниппетаIf, удостоверьтесь, что применяете кэшируемый вызов сниппета для проверки условия, для того чтобы не было надобности исполнять эту проверку при любом запросе.

www.modx.cc

Условия использования материалов сайта

Все авторские и смежные права на материалы, опубликованные на сайте MODX.RU, за исключением случаев, когда автор материала указан отдельно, принадлежат сайту MODX.RU.

Все материалы, авторские права на которые принадлежат MODX.RU, могут воспроизводиться в любых СМИ - газетах, журналах, радиостанциях, телеканалах и сайтах сети Интернет. При перепечатке или ретрансляции материалов необходимо указать ссылку на первоисточник, а при перепечатке материалов в сети Интернет обязательным условием является наличие гиперссылки на MODX.RU как на источник материала.

Мы разрешаем частичное использование материалов сайта MODX.RU, однако запрещаем полное зеркалирование материалов сайта в сети Интернет. Перепечатка новостей, статей и прочих материалов на сторонних веб-сайтах и в печатных изданиях возможно только при соблюдении следующих условий:

  1. Материал может быть размещен на вашем ресурсе при условии указания прямой действующей гиперссылки на оригинал публикуемого материала на нашем сайте. "Прямая гиперссылка" подразумевает отсутствие в коде гиперссылки перенаправления (редиректа) запроса либо скриптов, закрывающих гиперссылку от поисковых машин. "Действующей" считается гиперссылка, щелкнув на которой мышью, пользователь попадет на страницу проекта MODX.RU. Указанная ссылка должна быть размещена сразу под заголовком публикуемого материала или в конце текста на странице неотрывно от материала (если материал многостраничный - на каждой странице) и иметь следующий вид (пример HTML кода):

    Оригинал статьи: <a href="http://modx.ru/blog/modx-0962/">"Выпущен новый релиз MODx 0.9.6.2"</a><br/> Источник: <a href="http://modx.ru/">Русская поддержка MODX</a>

  2. Запрещается изменение подписей, благодарностей, изображений и любой другой справочной информации, указанной в материале, а также любые корректировки материала.
  3. О каждом факте использования наших материалов необходимо уведомлять администрацию проекта MODX.RU.
  4. Обращаем ваше внимание, что установка прямых текстовых гиперссылок на MODX.RU является обязательным условием любого копирования материалов с нашего сайта.

В случае возникновения вопросов по поводу использования наших материалов, обращайтесь к администрации проекта MODX.RU.

Если вы считаете, что какие-либо материалы, размещенные на нашем сайте, нарушают чьи-либо права на собственность, пожалуйста, свяжитесь с нами и мы урегулируем этот вопрос.

Отказ от ответственности

Вся информация предоставлена исключительно в ознакомительных или образовательных целях. Администрация сайта MODX.RU не несет ответственности за прямой или косвенный ущерб, понесенный в результате использования информации, размещенной на данном сайте. Вы используете эту информацию на свой страх и риск.

Администрация сайта MODX.RU не несет ответственности за содержание сообщений, публикуемых пользователями в форуме и комментариях к материалам, но приложит все усилия для выявления и удаления сообщений, нарушающих чьи-либо права.

Положение пользователя и/или компании в рейтинге MODX.RU может лишь косвенно служить одним из многих возможных критериев оценки знаний, опыта и любых других характеристик данного пользователя и/или компании.

Используя информацию с сайта MODX.RU, вы соглашаетесь, что вы самостоятельно без какого-либо участия MODX.RU формируете свои собственные критерии оценки и делаете выводы о принципиальной возможности, финансовой привлекательности, рисках и прочих условий сотрудничества с данным исполнителем.

MODX.RU отказывается от каких-либо персональных оценок, утверждений и гарантий о профессионализме и надежности пользователей и/или компаний, вне зависимости от их положения в рейтинге в любой момент времени.

Если вы не согласны с данными условиями, вы должны покинуть этот сайт немедленно.

modx.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта