if - Сниппет для вывода информации по условию

Если при вызове if условие в параметре is выполняется, то выведется содержимое параметра then сохранить + продолжить,

если нет - содержимое параметра else.

Если необходимо ничего не выводить через then или else, то можно вовсе не задавать этот параметр.

Некэшируемый вызов

При работы с внешними плейсхолдерами необходимо вызывать сниппет некешируемым.

А внешний плейсхолдер это, например, [+pages+] из Ditto.

Пример вызова:

// пример вызова кэшируемого...

[ [if? &is=`2:=:5` &then=`true` &else=`false`] ]

// и некэшируемого if

[ !if? &is=`2:=:5` &then=`true` &else=`false`! ]

Параметры сниппета:

Параметр Описание Возможные значения Пример По умолчанию
is Обрабатываемое условие что сравниваем:как сравниваем:с чем сравниваем is=`2:=:5` Пусто
then Содержимое для вывода, если условие верно @tpl:chunkname или любой html-код с тегами MODX ;then=`@TPL:akcia` Пусто
else Содержимое для вывода, если условие не верно @tpl:chunkname или любой html-код с тегами MODX else=`@TPL:akcia` Пусто
math Включает выполнение математических функций в параметре is on math=`on` Пусто
separator Разделитель в условии Например, ~ separator=`~` :

Для того чтобы парсер не обрабатывал вариант и then и else, как это делает PHx, вызывайте: &then='@TPL:chunkname' — где chunkname - имя чанка.

В этом случае будет выполнен только результирующий чанк.


Операторы используемые в условии:

is, = - равно

not, != - не равно

>, gt - больше

<, lt - меньше

>=, gte - больше или равно

lte, <= - меньше или равно

isempty, empty - проверка на пустоту

not_empty, !empty - проверка на заполненность

null, is_null - проверка, является ли значение переменной равным NULL

in_array, inarray, in - наличие в массиве

not_in, !in - отсутствие в массиве

contains - наличие в строке

not_contains, !contains - отсутствие в строке


Выполнение математических функций:

is=`[+id+]*10:=:30`


Примеры использования:

  • Выводить акцию нужно только в каталоге с ID = 5
    [ [if? &is=`2:=:5` &then=`@TPL:akcia`] ]
  • Выводить акцию нужно только в каталоге с ID = 5 или в каталоге с шаблоном №7,8,9
    [ [if? &is=`2:=:5:or:1:in:7,8,9` &then=`@TPL:akcia`] ]
  • Выводить акцию нужно только в каталоге с ID = 5 и только в ресурсе с шаблоном №2
    [ [if? &is=`2:=:5:and:1:=:2` &then=`@TPL:akcia`] ]
  • Выводить акцию нужно только в каталоге с ID = 5 и только в ресурсе с шаблоном №2 или в других шаблонах но с ТВ show_akcia = 1
    [ [if? &is=`2:=:5:and:1:=:2:or::=1` &then=`@TPL:akcia`] ]
  • Выводить акцию только для товаров с ценой в диапазоне >300$ <=700$
    [ [if? &is=`:>:300:and::<=:700` &then=`@TPL:akcia`] ]
  • Выводить при кратности записи Ditto 3
    [ [if? &is=`[+ditto_iteration+]+1:%:3` &then=`true` &else=`false`] ]   [ [if? &is=`[+ditto_index+]+1:%:3` &then=`true` &else=`false`] ] 
  • Выводить при кратности записи Ditto 3 но с умножением значения
    [ [if? &is=`[+ditto_iteration+]*2:%:3` &then=`true` &else=`false` &math=`on`] ] 
  • Выводить значение математического выражения
    [ [if? &is=`[+ditto_iteration+]*2` &math=`on`] ]
Проверить информацию
Проверить информацию