Фильтры ввода/вывода MODX Revolution PHx (модификаторы)
Что такое PHx фильтры?
PHx фильтры в MODX Revolution позволяют обрабатывать значения тегов непосредственно в шаблонах, сниппетах и чанках.
Как и зачем использовать PHx фильтры?
Пример 1:
Хорошим тоном считается когда клик по логотипу компании отправляет на главную страницу сайта. Но ссылка должна быть неактивна, если пользователь находится как раз на главной.Т.к. в MODX чаще всего вы используете шаблоны страниц, в данном случае вам бы потребовалось создать два шаблона.
Один для главной без ссылки:
<img src="logo.svg">
Второй для внутренних страниц со ссылкой:<a href="index.html"><img src="logo.svg"></a>
Это неудобно.С помощью PHx модификатора is (равенство) вы можете сделать так:
[[*id:is=`1`:then=`<img src="logo.svg">`:else=`<a href="[[~1]]"><img src="logo.svg"></a>`]]
Если id страницы равен 1, вернуть логотип со ссылкой, а если id не равен 1, вернуть логотип без ссылки.Тем самым вы избавляетесь от создания двух практически идентичных шаблонов и обходитесь одним, но с модификатором вывода.
Пример 2:
Нам требуется вывести разные названия страницы в зависимости от шаблона.[[*template:is=`1`:or:is=`2`:then=`[[*pagetitle]]`:else=`[[*longtitle]]`]]
Если шаблон страницы равен 1 или равен 2, вернуть [[*pagetitle]]
, иначе вернуть [[*longtitle]]
Как видите, можно использовать несколько модификаторов в одной цепочке.
Хотя, правильнее было бы написать так:
[[[[*template:is=`1`:or:is=`2`:then=`*pagetitle`:else=`*longtitle`]]]]
Почему? Ответ будет в следующей статье "Оптимизация PHx фильтров ввода/вывода (модификаторов) в MODX Revolution".PHx модификаторы условия
PHx модификатор | Описание | Пример |
---|---|---|
if, input | if — дополнительное условие "если" input — добавляет в тег данные для обработки | [[*id:is=`1`:and:if=`[[*template]]`:ne=`2`:then=`Yes`]] Если id равен 1 и template не равен 2, возвращаем Yes. [[*content:input=`Текст красивый`:ucase]] C помощью модификатора input назначим тегу content значение и модифицируем его. |
or, and | or — условие "ИЛИ" and — условие "И" | [[*id:is=`1`:or:is=`2`:then=`Yes`]] Если id равен 1 или 2, возвращаем Yes. [[*id:is=`1`:and:if=`[[*template]]`:is=`2`:then=`Yes`]] Если id равен 1 и template равен 2, возвращаем Yes. |
is синонимы isequalto, isequal, equalto, equals, eq | Если значение тега равно значению модификатора, выполняется следующее действие или модификатор. Используется с «then» и «else». | [[*id:is=`1`:then=`Yes`:else=`No`]] Если id равен 1, возвращаем Yes, иначе Нет. |
ne синонимы notequalto, notequals, isnt, isnot, neq | Если значение тега не равно значению модификатора, выполняется следующее действие или модификатор. Используется с «then» и «else». | [[*id:ne=`1`:then=`Yes`:else=`No`]] Если id не равен 1, возвращаем Yes, иначе Нет. |
ge синонимы greaterthanorequalto, equalorgreaterthen, eg, isgte, gte | Если значение тега больше или равно значению модификатора, выполняется следующее действие или модификатор. Используется с «then» и «else». | [[*id:ge=`1`:then=`Yes`:else=`No`]] Если id больше или равен 1, возвращаем Yes, иначе Нет. |
gt синонимы isgreaterthan, greaterthan, isgt | Если значение тега больше значения модификатора, выполняется следующее действие или модификатор. Используется с «then» и «else». | [[*id:gt=`1`:then=`Yes`:else=`No`]] Если id больше 1, возвращаем Yes, иначе Нет. |
el синонимы equaltoorlessthan, lessthanorequalto, le, islte, lte | Если значение тега меньше или равно значению модификатора, выполняется следующее действие или модификатор. Используется с «then» и «else». | [[*id:el=`1`:then=`Yes`:else=`No`]] Если id меньше или равен 1, возвращаем Yes, иначе Нет. |
lt синонимы islowerthan, islessthan, lowerthan, lessthan, islt | Если значение тега меньше значения модификатора, выполняется следующее действие или модификатор. Используется с «then» и «else». | [[*id:lt=`1`:then=`Yes`:else=`No`]] Если id меньше 1, возвращаем Yes, иначе Нет. |
contains | Если значение тега содержит значение модификатора, выполняется следующее действие или модификатор. Используется с «then» и «else». Регистрозависимый! | [[*content:contains=`Искомый текст`:then=`Yes`:else=`No`]] Если content содержит строку «Искомый текст», возвращаем Yes, иначе Нет. |
containsnot | Если значение тега не содержит значение модификатора, выполняется следующее действие или модификатор. Используется с «then» и «else». Регистрозависимый! | [[*content:containsnot=`Искомый текст`:then=`Yes`:else=`No`]] Если content не содержит строку «Искомый текст», возвращаем Yes, иначе Нет. |
Комментарии (0)
Напишите комментарий