Фильтры модификаторы 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`]]