Модификаторы (фильтра php) в MODx revo

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

 [[*id:is=`1`:then=`[[$slider]]`]] [[+placeholder:default=`К сожалению, ничего не найдено`]] [[+something:notempty=`Hello[[+name]]`]] 

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

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

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

 

Модификатор Описание Пример
if,input if - задает дополнительное условие
input - добавляет в тег обратываемые данные
 [[+phx:input=`img/23.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=`один`]]
 - если id-ресурса = 10, выводим "один".
else Условие, если тег не соответствует модификатору, выводим сообщение. Используется только в связке с "then"
 [[*id:is=`10`:then=`один`:else=`два`]]
 - если id-ресурса = 10, выводим "один" иначе "два".
contains Если тег содержит модификатор, используется с "then" и "else".
 [[+author:contains=`Сэ́мюэл Кле́менс`:then=`Марк Твен`]]
 - если в теге содержится фраза "Сэ́мюэл Кле́менс" выводим "Марк Твен".
containsnot Если тег не содержит модификатор, используется с "then" и "else".
 [[+author:containsnot=`Сэ́мюэл Кле́менс`:then=`Кто-нибудь еще`]]
 - если в теге не содержится фраза "Сэ́мюэл Кле́менс" выводим "Кто-нибудь еще".

 

Модификаторы для работы со строками

 

Модификатор Описание Пример
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]]
.

 

Модификатор UserInfo

Прямой доступ к данным из таблицы modx_user_attributes в базе данных, с помощью модификаторов вывода вместо сниппетов, может быть достигнуто просто за счет использования модификатора UserInfo. Выберите нужный столбец из таблицы и укажите его в качестве свойства модификатора, например, так: 

 Внутренний ключ пользователя: [[!+modx.user.id:userinfo=`internalKey`]] Логин: [[!+modx.user.id:userinfo=`username`]] Полное имя: [[!+modx.user.id:userinfo=`fullname`]] Роль: [[!+modx.user.id:userinfo=`role`]] E-mail: [[!+modx.user.id:userinfo=`email`]] Телефон: [[!+modx.user.id:userinfo=`phone`]] Мобильный телефон: [[!+modx.user.id:userinfo=`mobilephone`]] Факс: [[!+modx.user.id:userinfo=`fax`]] Дата рождения: [[!+modx.user.id:userinfo=`dob`:date=`%Y-%m-%d`]] Пол: [[!+modx.user.id:userinfo=`gender`]] Страна: [[+modx.user.id:userinfo=`country`]] Область: [[+modx.user.id:userinfo=`state`]] Почтовый индекс: [[+modx.user.id:userinfo=`zip`]] Фото: [[+modx.user.id:userinfo=`photo`]] Комментарий: [[+modx.user.id:userinfo=`comment`]] Пароль: [[+modx.user.id:userinfo=`password`]] Кеш пароля: [[+modx.user.id:userinfo=`cachepwd`]] Последняя авторизация: [[+modx.user.id:userinfo=`lastlogin`:date=`%Y-%m-%d`]] Дата текущей авторизации:[[+modx.user.id:userinfo=`thislogin`:date=`%Y-%m-%d`]] Количество авторизаций: [[+modx.user.id:userinfo=`logincount`]] 

 

Комментарии ()
    Ваш email не будет опубликован. Обязательные поля отмечени символом *