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

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

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

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

Все довольно просто, модификаторы phx значительно облегчают жизнь разработчику сайта, например есть сайт и необходимо только на главной странице показывать слайдер, ну или любой ебучий банер. В шаблоне сайта достаточно прописать[[*id:is=`1`:then=`[[$slider]]`]], где 1 - это id главной страницы, а $slider - чанк с html кодом слайдера... и т.д. и т.п. только долбаебы создают новый шаблон и копируют туда весь html-код страницы, ради пары строчек слайдера/банера.

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

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

МодификаторОписаниеПример
if,inputif - задает дополнительное условие
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,andor - условие "ИЛИ"
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Переведет только первую букву строки в верхний регистр, аналогично функции phpucfirst.[[*pagetitle:ucfirst]]
htmlent, htmlentitiesПреобразует все символы в соответствющие HTML сущности (для тех символов, для которых HTML сущности существуют), аналогично функции phphtmlentities. Использует текущие настройки системы "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.: Не забываем отключать кеширование тегов, где нужно!

19481