Модификаторы в 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`]] |
[ [!+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