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

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

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

Фильтры в Revolution позволяют манипулировать тем, как будут обрабатываться те или иные теги. Они позволяют вам изменять значения прямо внутри ваших шаблонов.

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

Модификатор Описание Пример
if,input if - задает дополнительное условие
input - добавляет в тег обратываемые данные
[ [+phx:input=`/assets/img/wow.gif`]] - добавляем в тег phx входное значение, следующим модификатором, например, можно обработать изображение.
Или [ [+phx:input=`/assets/img/wow.gif`:contains=`wow.gif` :then=`da`:else=`net`]] проверить есть ли в пути определенная последовательность символов.

[ [*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".

[ [*id:is=`1`:and:if=`[ [*id]]`:ne=`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"
contains Если тег содержит модификатор, используется с "then" и "else". [ [+author:contains=`Сэ?мюэл Кле?менс`:then=`Марк Твен`]] - если в теге содержится фраза "Сэ?мюэл Кле?менс" выводим "Марк Твен"
containsnot Если тег не содержит модификатор, используется с "then" и "else". [ [+author:containsnot=`Сэ?мюэл Кле?менс`:then=`Кто-нибудь еще`]] - если в теге не содержится фраза "Сэ?мюэл Кле?менс" выводим "Кто-нибудь еще"
hide Если предыдущий модификатор возвращает положительное значение ("then"), то не выводим обработанный тег. [ [*id:is=`10`:hide]] - если id-ресурса = 10, ничего не выводим
show Если предыдущий модификатор возвращает положительное значение ("then"), то выводим обработанный тег. [ [*id:is=`10`:show]] - если id-ресурса = 10, выводим.
then Условие, если тег соответствует модификатору, выводим сообщение, иначе ничего не выводим [ [*id:is=`10`:then=`Yes!`]] - если id-ресурса = 10, выводим "Yes!".
else Условие, если тег не соответствует модификатору, выводим сообщение. Используется только в связке с "then" [ [*id:is=`10`:then=`Yes!`:else=`nooo`]] - если id-ресурса = 10, выводим "Yes!" иначе "nooo".
select Установить свое значение, в зависимости от модификатора и вывода тега. Так же можно использовать "else", например если значение [ [+controls]] - не подходит под шаблон select [ [+controls:select=`0=ВЫКЛ&1=ВКЛ&2=ХЗ`:else=`Ошибка`]] - если тег [ [+controls]] - выводит "0", значит выводим "ВЫКЛ", если тот же тег равен "1" выводим "ВКЛ", если "2" выводим "ХЗ", если тег не подходит нашей выборке, то выводим "Ошибка".
in Работает аналогично php in_array, если тег совпадет с одним из элементов модификатора (разделяются они запятыми), то выводим then, если не совпало else [ [*template:in=`3,4`:then=`[ [$myChank]]`:else=`пробел`]] - если тег [ [*template]] (текущий шаблон) - равен "3" или "4", значит выводим [ [$myChank]], если не равен, выводим else.

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

Модификатор Описание Пример
cat Добавляет значение параметра (если оно не пустое) к входному значению [ [+numbooks:cat=`books`]]
after, append Добавляет значение параметров к входному значению (если оба не пустые). Добавлен в 2.6.0. [ [+totalnumber:after=`total`]]
before, prepend Добавляет значение параметров к входному значению (если оба не пустые). Добавлен в 2.6.0. [ [+booknum:before=`book #`]]
lcase, lowercase, strtolower Преобразует строки в нижний регистр. Похож на PHP strtolower [ [+title:lcase]]
ucase, uppercase, strtoupper Преобразует строки в верхний регистр. Похож на PHP strtoupper [ [+headline:ucase]]
ucwords Преобразует первую букву слова в верхний регистр. Похож на PHP ucwords [ [+title:ucwords]]
ucfirst Преобразует первую букву строки в верхний регистр. Похож на PHP ucfirst [ [+name:ucfirst]]
htmlent, htmlentities Замените любой символ, имеющий HTML-сущность, этой сущностью. Похож на PHP htmlentities. Uses the current value the system setting modx_charset with flag ENT_QUOTES [ [+email:htmlent]]
esc,escape Безопасно экранирует значения символов, используя регулярные выражения и str_replace. Также убирает [, ] и [ [+email:escape]]
strip Заменить все разрывы строк, табуляции и несколько пробелов одним пробелом [ [+textdocument:strip]]
stripString Удаляет строку указанного значения [ [+name:stripString=`Mr.`]]
stripmodxtags Удаляет теги MODX из ввода. (Добавлено в v2.7) [ [+code:stripmodxtags]]
replace Заменяет одно значение другим [ [+pagetitle:replace=`Mr.==Mrs.`]]
striptags, stripTags,notags,strip_tags Удаляет HTML-теги из ввода. Опционально принимает значение, чтобы указать, какие теги разрешить. Похож на PHP strip_tags [ [+code:strip\_tags=` `]]
len,length, strlen Подсчитывает длину пропущенной строки. Похож на PHP strlen [ [+longstring:strlen]]
reverse, strrev Обращает ввод, символ за символом. Похож на PHP strrev [ [+mirrortext:reverse]]
wordwrap Вставка символа новой строки после установленного количества символов. Похож на PHP wordwrap. Takes optional value to set wordwrap position. [ [+bodytext:wordwrap=`80`]]
wordwrapcut Вставляет символ новой строки после заданного количества символов, независимо от границ слова. Похож на PHP wordwrap, с включенным сокращением слова. Принимает необязательное значение для установки положения переноса слов. [ [+bodytext:wordwrapcut=`80`]]
limit Ограничивает строку определенным количеством символов. По умолчанию 100. [ [+description:limit=`50`]]
ellipsis Добавляет многоточие и усекает строку, если она длиннее определенного количества символов. В качестве контрольных точек используются только пробелы. По умолчанию 100. [ [+description:ellipsis=`50`]]
tag Отображает необработанный элемент без :tag. Полезно для документации. [ [+showThis:tag]]
tvLabel Отображает метку с TV, полезную при использовании выбора или флажки и т.д., Где вы используете `Label==1
math Возвращает результат расширенного расчета (Не рекомендуется) Удалено в Revolution 2.2.6. [ [+blackjack:add=`21`]]
add,increment,incr Возвращает входные данные, увеличенные на параметр (по умолчанию: +1) [ [+downloads:incr]]
subtract,decrement,decr Возвращает входные данные, уменьшенные на параметр (по умолчанию: -1) [ [+countdown:decr]] [ [+moneys:subtract=`100`]]
multiply,mpy Возвращает входные данные, умноженные на параметр (по умолчанию: *2) [ [+trifecta:mpy=`3`]]
divide,div Возвращает входные данные, разделенные на опции (по умолчанию: /2) Не принимает 0. [ [+rating:div=`4`]]
modulus,mod Возвращает модуль параметра на входе (по умолчанию: %2, возвращает 0 или 1) [ [+number:mod]] или [ [+number:mod=`3`]]
ifempty,default,empty, isempty Возвращает входное значение, если оно пустое [ [+name:default=`anonymous`]]
notempty, !empty, ifnotempty, isnotempty Возвращает входное значение, если оно не пустое [ [+name:notempty=`Hello `[ [+name]]`!`]]
nl2br Преобразует символ новой строки (\n) в HTML
element. Используйте это, если вы принимаете ввод, вы думаете, что в нем должны быть новые строки, а их нет. Похож на PHP nl2br. [ [+textfile:nl2br]]
date Форматирует временную метку Unix в другой формат. Похож на PHP strftime. Значение это формат. Посмотрите Форматы даты. [ [+birthyear:date=`%Y`]]
strtotime Преобразует строку даты в метку времени Unix. Полезно сочетать это с выходным фильтром даты. Похож на PHP strtotime. Принимает дату на вход. Посмотрите Форматы даты. [ [+thetime:strtotime]]
fuzzydate Возвращает симпатичный формат даты со вчерашним и сегодняшним фильтрованием. Принимает дату на вход. [ [+createdon:fuzzydate]]
ago Возвращает красивый формат даты в секундах, минутах, неделях или месяцах назад. Принимает дату на вход (strtotime). [ [+createdon:date=`%d-%m-%Y`:ago]]
md5 Создает хеш MD5 для входной строки. Похож на PHP md5. [ [+password:md5]]
cdata Обтекание текста тегами CDATA [ [+content:cdata]]
userinfo Возвращает запрошенные данные пользователя. Элемент должен быть идентификатором modUser. Поле значения - это столбец для захвата, например: fullname, email. Смотрите примеры ниже. [ [+modx.user.id:userinfo=`username`]]
isloggedin Возвращает true, если пользователь аутентифицирован в этом контексте. [ [+modx.user.id:isloggedin]]
isnotloggedin Возвращает true, если пользователь не аутентифицирован в этом контексте. [ [+modx.user.id:isnotloggedin]]
toPlaceholder Помещает введенное значение в переданный плейсхолдер. Не мешает вывод значения TV, поэтому добавьте [ [*someTV:toPlaceholder=`placeholder`:notempty=``]] если вы не хотите выводить значение самого TV. [ [*someTV:toPlaceholder=`placeholder`]]
cssToHead Поместите элемент <link> в , где входное значение находится внутри атрибута href.
Uses modX.regClientCSS. [ [+cssTV:cssToHead]]
htmlToHead Вставьте блок HTML-кода в заголовок страницы, прежде чем </head>.
Uses modX.regClientStartupHTMLBlock [ [+htmlTV:htmlToHead]]
htmlToBottom Вставьте HTML-код в конце страницы перед </body>. Использовать modX.regClientHTMLBlock. [ [+htmlTV:htmlToBottom]]
jsToHead Вставьте код JS (или ссылку) в заголовок страницы перед </head>. Использовать modX.regClientStartupScript. [ [+jsTV:jsToHead]]
jsToBottom Вставьте код JS (или ссылку) в конце страницы перед </body>. Использовать modX.regClientScript. [ [+jsTV:jsToBottom]]
urlencode Преобразует ввод в строку, удобную для URL, аналогично тому, как это делает форма HTML. Похож на PHP urlencode [ [+mystring:urlencode]]
urldecode Преобразует входные данные из строки, удобной для URL, аналогично PHP urldecode [ [+myparam:urldecode]]
filterPathSegment Добавлено в 2.7. Преобразует ввод в удобную для URL строку с тем же механизмом, который превращает заголовок страницы в псевдоним, включая транслитерацию, если она включена. Полезно для пользовательских URL. [ [+pagetitle:filterPathSegment]]

 

Модификатор 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`]]

[ [!+modx.user.id]] возвращает id вошедшего в систему пользователя. Конечно, вы можете заменить, его на 1 или другое поле ресурса или даже на плейсхолдер, который возвращает числовое представление id пользователя.

Обратите внимание, что профиль текущего пользователя уже доступен в MODX по умолчанию, так что вам не нужно использовать модификатор UserInfo для него:

  • [ [!+modx.user.id]] - Выведет идентификатор пользователя
  • [ [!+modx.user.username]] - Выведет логин пользователя
  • [ [!+modx.user.fullname]] - Полное имя пользователя
  • [ [!+modx.user.dob]] - Дата рождения

Фильтр userinfo нужно вызывать некэшированным, иначе пользователи будут видеть чужие закэшированные данные.

lyjnnw46sg1z4dm5