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

Что такое фильтры?

Фильтры phx, позволяют манипулировать значением тега, прямо внутри шаблона.

Нах они нужны?

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

[­[*id:is=`1`:then=`[­[$slider]­]`]­]

где 1 - это id главной страницы, а $slider - чанк с html кодом слайдера... и т.д. и т.п. только долбаебы создают новый шаблон и копируют туда весь html-код страницы, ради пары строчек слайдера/банера.

В следующих таблицах перечислены некоторые модификаторы, которые могут быть использованы для любого тега MODx Revolution.

Модификаторы условия

МодификаторОписаниеПример
if,input if - задает дополнительное условие
input - добавляет в тег обратываемые данные
[­[+phx:input=`/assets/img/hui.gif`]­]

добавляем в тег phx входное значение, следующим модификатором, например, можно обработать изображение.

 [­[*id:is=`1`:and:if=`[­[*id]­]`:ne=`2`:then=`da`:else=`net`]­]
если id-ресурса = 1 и не равно 2, выводим "da", или же "net"
or,and or - условие "ИЛИ"
and - условие "И"
[­[*id:is=`1`:or:if=`[­[*id]­]`:is=`2`:then=`da`:else=`net`]­]
- если id-ресурса = 1 или = 2, выводим "da", или же "net"
isequalto, isequal, equalto, equals, is, eq Если тег равен модификатору, используется с "then" и "else."
[­[*id:is=`1`:then=`da`:else=`net`]­]
- если id-ресурса = 1, выводим "da", или же "net"
notequalto, notequals, isnt, isnot, neq, ne Если тег не равен модификатору, используется с "then" и "else".
[­[*id:ne=`1`:then=`da`:else=`net`]­] - если id-ресурса не равно 1, выводим "da", или же "net"
greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte Если тег больше или равен модификатору, используется с "then" и "else".
[­[*id:ge=`1`:then=`da`:else=`net`]­] - если id-ресурса больше или равен 1, выводим "da", или же "net"
isgreaterthan, greaterthan, isgt, gt Если тег больше модификатора, используется с "then" и "else".
[­[*id:gt=`1`:then=`da`:else=`net`]­] - если id-ресурса больше 1, выводим "da", или же "net"
equaltoorlessthan, lessthanorequalto, el, le, islte, lte Если тег меньше или равен модификатору, используется с "then" и "else".
[­[*id:el=`10`:then=`da`:else=`net`]­] - если id-ресурса меньше или равно 10, выводим "da", или же "net"
islowerthan, islessthan, lowerthan, lessthan, islt, lt Если тег меньше модификатора, используется с "then" и "else".
[­[*id:lt=`10`:then=`da`:else=`net`]­] - если id-ресурса меньше 10, выводим "da", или же "net"
hide Если предыдущий модификатор возвращает положительное значение ("then"), то не выводим обработанный тег.
[­[*id:is=`10`:hide]­] - если id-ресурса = 10, ничего не выводим
show Если предыдущий модификатор возвращает положительное значение ("then"), то выводим обработанный тег.
[­[*id:is=`10`:show]­] - если id-ресурса = 10, выводим.
then Условие, если тег соответствует модификатору, выводим сообщение, иначе ничего не выводим
[­[*id:is=`10`:then=`ept`]­] - если id-ресурса = 10, выводим "ept".
else Условие, если тег не соответствует модификатору, выводим сообщение. Используется только в связке с "then"
[­[*id:is=`10`:then=`ept`:else=`nooo`]­] - если id-ресурса = 10, выводим "ept" иначе "nooo".

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

МодификаторОписаниеПример
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]­].
urlencode Аналогично функции php urlencode.
[­[+stringi:urlencode]­].
urldecode Аналогично функции php urldecode.
[­[+stringi:urldecode]­].

Создаем свой модификатор

Модификаторы создаются, в точности как сниппеты. Тоесть по сути любой сниппет можно использовать в качестве модификатора, другой вопрос, вернет ли он нам то что нужно?)) например: [­[*id:tester=`тест`]­]
ПараметрЗначениеПример чо выйдет
input Значение тега
выйдет значение тега [­[*id]­]
options Значение модификатора "тест"
token Тип тега *
name Наименование тега id

К примеру, создадим тестовый сниппет "tester", и почекаем что вылезает:

<?php
echo $input .'<hr />';
echo $options.'<hr />';
echo $token.'<hr />';
echo $name.'<hr />';

P.s.: Не забываем отключать кеширование тегов, где нужно!