Modx условия в чанках

Modx условия в чанках

В MODx существуют встроенный синтаксис для использования конструкций if else.

Модификаторы вывода

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

Условные модификаторы вывода

Модификатор Описание Пример использования
if, input if — задает дополнительное условие input — добавляет в тег обратываемые данные

[ [* >

or Объединение нескольких модификаторов связью ИЛИ

[ [* >

and Объединение нескольких модификаторов связью И

[ [* >

isequalto, isequal, equalto, equals, is, eq Сравнивает передаваемое значение с установленным. Если значения совпадают, выводится значение «then», если нет — «else»

[ [* >

notequalto, notequals, isnt, isnot, neq, ne Сравнивает передаваемое значение с установленным. Если значения НЕ совпадают, выводится значение «then», если нет — «else»

[ [* >

greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte То же, только условие «Больше или равно»

[ [* >

isgreaterthan, greaterthan, isgt, gt То же, только условие «Строго больше»

[ [* >

equaltoorlessthan, lessthanorequalto, el, le, islte, lte То же, только условие «Меньше или равно»

[ [* >

islowerthan, islessthan, lowerthan, lessthan, islt, lt То же, только условие «Строго меньше»

[ [* >

hide Скрывает элемент, если условие выполняется

[ [* >

show Отображает элемент, если условие выполняется

[ [* >

then Используется для составления условий

[ [* >

else Используется для составления условий (совместно с «then»)

[ [* >

select Установить свое значение, в зависимости от модификатора и вывода тега. Так же можно использовать "else", например если значение [ [+controls]] — не подходит под шаблон select memberof, ismember, mo Проверяет, является ли пользователь членом указанной группы пользователей

[ [+modx.user. >

Также фильтры могут применяться для модификации вывода сниппетов. Фильтр нужно прописывать перед всеми параметрами (перед знаком вопроса):

Читайте также:  Linux создание разделов жесткого диска

Также для того что бы иметь возможность пользоваться вложеными конструкциями можно воспользоваться дополнительным пакетом, который имеет короткое и емкое название 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().

В Modx есть собсвенные средства для проверок, т.к он не поддерживает PHP "в открытом виде"

В самом начале я напишу 2 проверки, которые я использую постоянно

Чтобы составить условие на существование в БД параметра modx и при условие, что оно не пустое, то пишем следующий скрипт

Проверка на значение: Если id равен 5, то выводим значение, иначе выполняем другое дейсвтие

В MODx существуют встроенный синтаксис для использования конструкций if else.

Модификаторы вывода

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

Условные модификаторы вывода

Модификатор Описание Пример использования
if, input if — задает дополнительное условие input — добавляет в тег обратываемые данные

[ [* >

or Объединение нескольких модификаторов связью ИЛИ

[ [* >

and Объединение нескольких модификаторов связью И
Читайте также:  Linux на каком языке программирования

[ [* >

isequalto, isequal, equalto, equals, is, eq Сравнивает передаваемое значение с установленным. Если значения совпадают, выводится значение «then», если нет — «else»

[ [* >

notequalto, notequals, isnt, isnot, neq, ne Сравнивает передаваемое значение с установленным. Если значения НЕ совпадают, выводится значение «then», если нет — «else»

[ [* >

greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte То же, только условие «Больше или равно»

[ [* >

isgreaterthan, greaterthan, isgt, gt То же, только условие «Строго больше»

[ [* >

equaltoorlessthan, lessthanorequalto, el, le, islte, lte То же, только условие «Меньше или равно»

[ [* >

islowerthan, islessthan, lowerthan, lessthan, islt, lt То же, только условие «Строго меньше»

[ [* >

hide Скрывает элемент, если условие выполняется

[ [* >

show Отображает элемент, если условие выполняется

[ [* >

then Используется для составления условий

[ [* >

else Используется для составления условий (совместно с «then»)

[ [* >

select Установить свое значение, в зависимости от модификатора и вывода тега. Так же можно использовать "else", например если значение [ [+controls]] — не подходит под шаблон select memberof, ismember, mo Проверяет, является ли пользователь членом указанной группы пользователей

[ [+modx.user. >

Также для особых случаев существует модуль — сниппет, называется он IF

Использование

Сниппет If может быть вызван с использованием тегов:

или, в случае, если объект может быть изменен до того, как кэш ресурса будет очищен, используйте не кэшируемый синтаксис:

Доступные свойства

Имя

Описание

Значение “по умолчанию“

Параметр, над значением которого выполняются условия.

Оператор сравнения с subject

Используется при необходимости, значение для сравнения subject и operator.

Выводится, если состояние принимает значение true

Выводится, если состояние принимает значение false

Если значение true, отображает все проверенные свойства

Если прошло обработку debug и значение true, после отображения свойств вывести die().

Доступные операторы

Оператор

Читайте также:  Блокнот для программиста notepad

Описание

Принимается если subject не равен operand

Принимается если subject равен operand

Принимается если subject больше operand.

Принимается если subject больше или равен operand.

Принимается если subject без значения.

Принимается если subject имеет значение.

Принимается если subject равен 0

Принимается если subject найден в списке операндов (строковый параметр, разделитель — запятая)

Примеры

Встраиваемый вызов сниппета

При использовании сниппета IF для проверки поля ресурса или шаблонной переменной (или другого значения, не измененного до очистки кэша), убедитесь, что используете кэшируемый вызов сниппета для проверки состояния. Это нужно, чтобы быть уверенным, что этот процесс не нужен при каждом запросе.

Скачиваем и устанавливаем пакет IF

Например, нам нужно что бы слайдер отображлся только на главной странице, с >

[ [If? &subject=`38` &operator=`EQ` &operand=`1` &then=«]]

или через модификаторы

Еще например, нам надо что бы выводился ЗАГОЛОВОК, если РАСШИРЕННЫЙ ЗАГОЛОВОК пуст, тогда вписываем:

[ [If? &subject=« &operator=`notempty` &then=«&else=`Конструкция условий if else в MODx` ]]

[ [*longtitle:is=«:then=`Конструкция условий if else в MODx`:else=«]]

Имеется папка (родительский документ) ее id 2, имеется другая папка родительский документ) ее id 3 и имеется сам документ внутри папки id 2, id этого документа 55. Дело в том что на одной странице применяется один чанк. при том товары имеют три варианта вывода. к примеру:

Но такой вариант запроса не работет… пытался искать в интернете решение проблемы, но не нашел…

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

Такой и не будет работать. Тогда уж так:

Но задача не совсем понятна. Вам где и что нужно выводить?

Вертикально идет одна форма вывода.а в самом низу где ‘Кухня вашей мечты’ уже другая форма. проблема в том что чанк один, следовательно только условие может помочь. В данном примере выводится 2 вида шаблона товара.у меня же будет три, по этому задал такой вопрос.

Ссылка на основную публикацию
Adblock detector