В следующих таблицах перечислены некоторые модификаторы, которые могут быть использованы для любого тега 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 вместо значения. Полезно для listbox/checkbox, где опции заданы как Label==1. |
[[*myTV:tvLabel]] |
| 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-элемент. Используйте, если во вводе должны быть переносы строк. Похож на 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> в <head>, где входное значение находится внутри атрибута href. Использует modX.regClientCSS. |
[[+cssTV:cssToHead]] |
| htmlToHead | Вставьте блок HTML-кода в заголовок страницы, прежде чем </head>. Использует 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`]] |
[[!+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 вошедшего в систему пользователя. Конечно, вы можете заменить его на [[*createdby]] или другое поле ресурса или даже на плейсхолдер, который возвращает числовое представление id пользователя.
Обратите внимание, что профиль текущего пользователя уже доступен в MODX по умолчанию, так что вам не нужно использовать модификатор UserInfo для него:
[[!+modx.user.id]]- Выведет идентификатор пользователя[[!+modx.user.username]]- Выведет логин пользователя[[!+modx.user.fullname]]- Полное имя пользователя[[!+modx.user.dob]]- Дата рождения
Фильтр userinfo нужно вызывать некэшированным, иначе пользователи будут видеть чужие закэшированные данные.