Разное

Modx revo fastfield: fastField — fastField | MODX Docs

Содержание

Фильтры ввода и вывода / Основы / Система / docs.modx.pro

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

Фильтры ввода

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

Фильтры вывода

В Revolution фильтры вывода ведут себя так же, как и PHx в Evolution, только фильтры теперь встроены прямо в движок MODX. Синтаксис выглядит так:

[[element:modifier=`value`]]

Фильтры могут применяться последовательно. Для этого напишите их подряд (слева направо):

[[element:modifier:anothermodifier=`value`:andanothermodifier:yetanother=`value2`]]

Также фильтры могут применяться для модификации вывода сниппетов. Фильтр нужно прописывать перед всеми параметрами (перед знаком вопроса):

[[mySnippet:modifier=`value`? &mySnippetParam=`something`]]

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

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

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

Модификатор Описание Пример использования
if, input Передаёт произвольный текст на ввод, для следующего модификатора [[*id:input=`[[+placeholder]]`:is=`1`:then=`Да`:else=`Нет`]]
or Объединение нескольких модификаторов связью ИЛИ [[+numbooks:is=`5`:or:is=`6`:then=`Здесь 5 или 6 книг`:else=`Не уверен, сколько книг`]]
and Объединение нескольких модификаторов связью И [[+numbooks:gt=`5`:and:lt=`10`:then=`Здесь от 5 до 10 книг`:else=`Книг или меньше 5, или больше 10`]]
isequalto, isequal, equalto, equals, is, eq Сравнивает передаваемое значение с установленным. Если значения совпадают, выводится значение «then», если нет — «else» [[+numbooks:isequalto=`5`:then=`Здесь 5 книг`:else=`Не уверен, сколько книг`]]
notequalto, notequals, isnt, isnot, neq, ne Сравнивает передаваемое значение с установленным. Если значения НЕ совпадают, выводится значение «then», если нет — «else» [[+numbooks:notequalto=`5`:then=`Не уверен, сколько книг`:else=`Здесь 5 книг`]]
greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte То же, только условие «Больше или равно» [[+numbooks:gte=`5`:then=`Здесь 5 книг или больше`:else=`Здесь меньше пяти книг`]]
isgreaterthan, greaterthan, isgt, gt То же, только условие «Строго больше» [[+numbooks:gt=`5`:then=`Здесь больше пяти книг`:else=`Здесь 5 книг или меньше`]]
equaltoorlessthan, lessthanorequalto, el, le, islte, lte То же, только условие «Меньше или равно» [[+numbooks:lte=`5`:then=`Здесь 5 книг или меньше`:else=`Здесь больше пяти книг`]]
islowerthan, islessthan, lowerthan, lessthan, islt, lt То же, только условие «Строго меньше» [[+numbooks:lte=`5`:then=`Здесь меньше пяти книг`:else=`Здесь 5 книг или больше`]]
hide Скрывает элемент, если условие выполняется [[+numbooks:lt=`1`:hide]]
show Отображает элемент, если условие выполняется [[+numbooks:gt=`0`:show]]
then Используется для составления условий [[+numbooks:gt=`0`:then=`Книги в наличии!`]]
else Используется для составления условий (совместно с «then») [[+numbooks:gt=`0`:then=`Книги в наличии!`:else=`Простите, но все продано.`]]
memberof, ismember, mo Проверяет, является ли пользователь членом указанной группы пользователей [[!+modx.user.id:memberof=`Administrator`]]

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

Модификатор Описание Пример использования
cat Добавляет значение после тега [[+numbooks:cat=`книг`]]
lcase, lowercase, strtolower Переводит все буквы в нижний регистр [[+title:lcase]]
ucase, uppercase, strtoupper Переводит все буквы в верхний регистр [[+headline:ucase]]
ucwords Делает первую букву в словах заглавной [[+title:ucwords]]
ucfirst Делает первую букву в строке заглавной [[+name:ucfirst]]
htmlent, htmlentities Преобразует все символы в соответствющие HTML-сущности [[+email:htmlent]]
esc, escape Безопасно экранирует символы, используя регулярные выражения и `str_replace()`. Также экранирует теги MODX. [[+email:escape]]
strip Заменяет все переносы, табуляции и любое количество пробелов только одним пробелом [[+textdocument:strip]]
stripString Вырезает из строки указанную подстроку [[+name:stripString=`Mr.`]]
replace Производит замену подстрок [[+pagetitle:replace=`Mr.==Mrs.`]]
striptags, stripTags,notags,strip_tags Вырезает все теги (можно указать разрешенные теги). Не используйте для обеспечения безопасности. [[+code:strip_tags]]
len,length, strlen Выводит длину строки [[+longstring:strlen]]
reverse, strrev Переворачивает строку символ за символом [[+mirrortext:reverse]]
wordwrap Вставляет перенос строки после каждого n-ого символа (слова не разбиваются) [[+bodytext:wordwrap=`80`]]
wordwrapcut Вставляет перенос строки после каждого n-ого символа, даже если этот символ будет внутри слова [[+bodytext:wordwrapcut=`80`]]
limit Выводит определенное количество символов с начала строки (значение по умолчанию — 100) [[+description:limit=`50`]]
ellipsis Добавляет многоточие и обрезает строку, если она длиннее, чем указанное количество символов (по умолчанию — 100) [[+description:ellipsis=`50`]]
tag Экранирование. Отображает элемент так как он есть, без :tag. Для использования в документации [[+showThis:tag]]
add, increment, incr Прибавляет указанное число (значение по умолчанию +1) [[+downloads:incr]] [[+blackjack:add=`21`]]
subtract, decrement, decr Вычитает указанное число (значение по умолчанию -1) [[+countdown:decr]] [[+moneys:subtract=`100`]]
multiply, mpy Умножает на указанное число (значение по умолчанию *2) [[+trifecta:mpy=`3`]]
divide,div Делит на указанное число (значение по умолчанию /2) [[+rating:div=`4`]]
modulus,mod Возвращает модуль числа (по умолчанию: %2, возвращает 0 или 1) [[+number:mod]]
ifempty,default,empty, isempty Возращает значение модификатора, если значение тега пусто [[+name:default=`anonymous`]]
notempty, !empty, ifnotempty, isnotempty Возращает значение модификатора, если значение тега непусто [[+name:notempty=`Hello [[+name]]!`]]
nl2br Заменяет символы новой строки \n на HTML-тег br [[+textfile:nl2br]]
date Переводит таймстамп в текст, в соответствии с указанным форматом (формат даты) [[+birthyear:date=`%Y`]]
strtotime Переводит дату в виде текста в UNIX таймстамп [[+thetime:strtotime]]
fuzzydate Принимает таймстамп и возвращает дату в виде «Сегодня в 16:20 PM» [[+createdon:fuzzydate]]
ago Возвращает число секунд, минут, недель или месяцев, прошедших с даты, указанной в теге. [[+createdon:ago]]
md5 Создает MD5-хеш значения [[+password:md5]]
cdata Оборачивает вывод тегами CDATA [[+content:cdata]]
userinfo Возвращает запрашиваемое значение из профиля пользователя. Необходимо указывать ID пользователя [[!+modx.user.id:userinfo=`username`]]
isloggedin Возвращает 1, если пользователь авторизован в текущем контексте [[!+modx.user.id:isloggedin:is=`1`:then=`Yes`:else=`No`]]
isnotloggedin Возвращает 1, если пользователь неавторизован в текущем контексте [[!+modx.user.id:isnotloggedin:is=`1`:then=`No`:else=`Yes`]]
urlencode Конвертирует значение как URL, то есть применяет PHP фнукцию `urlencode()` [[+mystring:urlencode]]
urldecode Конвертирует значение как из URL, то есть применяет PHP фнукцию `urldecode()` [[+myparam:urldecode]]

Модификаторы для работы с пользователями нужно вызывать некэшированными, чтобы каждый юзер видел актуальные данные.

Использование модификаторов вывода совместно с параметрами

Если у тега есть параметры, то их необходимо прописывать сразу после модификатора:

[[!getResources:default=`К сожалению, ничего не найдено`?
    &tplFirst=`blogTpl`
    &parents=`2,3,4,8`
    &tvFilters=`blog_tags==%[[!tag:htmlent]]%`
    &includeTVs=`1`
]]

Создание пользовательского модификатора

Любой сниппет может использоваться как модификатор вывода. Для этого просто укажите имя сниппета вместо модификатора. К примеру, создадим сниппет [[makeExciting]], добавляющий к выводу определенное количество восклицательных знаков:

[[*pagetitle:makeExciting=`4`]]

Такой вызов тега передаст в сниппет makeExciting следующие параметры для обработки:

Параметр Значение Значение в примере Комментарий
input Значение элемента $input = `[[*pagetitle]]`; Значение элемента, к которому применяется модификатор.
options Значение модификатора $options = 4; Дополнительные параметры (после знака =)
token Тип элемента $token = *; Cимвол, определяющий тип тега.
name Имя элемента $name = `pagetitle`; Имя плейсхолдера, к которому применяется модификатор.
tag Весь тег полностью $tag = `[[*pagetitle:makeExciting=`4`]]`; Весь тег, полностью.

Приведем пример кода нашего сниппета makeExciting:

<?php
$defaultExcitementLevel = 1;
$result = $input;

if (isset($options)) {
    $numberOfExclamations = $options;
}
else {
    $numberOfExclamations = $defaultExcitementLevel;
}

for ($i = $numberOfExclamations; $i > 0; $i--) {
    $result = $result . '!';
}

return $result;

Тег выводит всё, что возвращает сниппет. В нашем случае он вернет значение тега [[*pagetitle]] с четырьмя восклицательными знаками.

Если сниппет вернет пустую строку, то на страницу будет выведено изначальное значение тега.

Цепочки фильтров (Множественные модификаторы)

Хорошим примером цепочки фильтров будет форматирование даты, например, так:

[[*publishedon:strtotime:date=`%d.%m.%Y`]]

Модификатор 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 вошедшего в систему пользователя.
Конечно, вы можете заменить, его на [[*createdby]] или другое поле ресурса или даже на плейсхолдер, который возвращает числовое представление id пользователя.

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

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

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

pdoField / Сниппеты / pdoTools / docs.modx.pro

Этот сниппет одновременно обладает возможностями getResourceField и UltimateParent, то есть выводит любое поле указанного ресурса или его родителя, включая ТВ параметры.

Отличием от аналогов является работа с документами любых контекстов и возможность указать дополнительные параметры при выборке, что позволяет не выводить поля, например, скрытых ресурсов. Так же с помощью указания параметра &class можно получить поле любого объекта MODX. Может быть вызван как фильтр вывода.

Параметры

Принимает общие параметры выборки и результатов pdoTools и некоторые свои:

Параметр По умолчанию Описание
&id Текущий документ Идентификатор ресурса.
&field pagetitle Поле ресурса.
&top Выбирает родителя указанного &id на уровне &top.
&topLevel Выбирает родителя указанного &id на уровне &topLevel от корня контекста.
&default Указывает поле ресурса, которое вернётся, если &field окажется пуст. Более быстрый аналог фильтра :default=
&output Указывает строку, которая вернётся, если и &default, и &field оказались пусты.
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.

Если указаны &top или &topLevel, а &context нет, то для его определения будет сделан дополнительный запрос в базу данных.

Работу с чанками сниппет не поддерживает, так как возвращает значение только одного поля.

Примеры

Сниппет может быть вызван как фильтр вывода:

[[*id:pdofield=`longtitle`]]

При этом вы можете указывать параметры JSON массивом. Например, выбор второго родителя от ресурса и вывод его «longtitle»:

[[*id:pdofield=`{"top":2,"field":"longtitle"}`]]

Но лучше использовать обычный вызов — он и быстрее, и удобнее:

[[pdoField?
    &id=`[[*id]]`
    &field=`longtitle`
    &top=`2`
]]

getFeed MODX Revolution

Что такое getFeed?

Это простой сниппер для поиска RSS фидов и повтора фрагментов фида с помощью Chunk.

Системные требования

  • MODx Revolution 2.0.0-RC-2 или более новая версия
  • PHP5 или более новая версия

История разработки

getFeed был написан Jason Coward как простой модуль для чтения фидов. Опубликован 11 Июня 2010 года.

Загрузка

Вы можете загрузить ПО с помощью менеджера MODx Revolution, используя [Package Management],

Использование

getFeed предназначен для размещения сниппета в контенте и фильтрации ‘url’ .



[[!getFeed? &url=`http://path.com/to/my/rss.feed.rss`]]

Свойства:








Наименование

Описание

Значение “по умолчанию

url

Извлекаемый из фида URL


tpl

Название фрагмента кода, служащего как item tpl. Незаполненное будет использоваться под массив данных.


limit

Максимальное количество возвращаемых элементов; если 0 — неограниченно

0

offset

Номер элемента, от которого начинается отсчет. Отсчет ведется от 0.

0

totalVar

Название ячейки для хранения всех номеров элементов в фиде. Для совместимости с getPage.

total

toPlaceholder

Если установлено – будет использоваться в качестве исходных данных для заполнения. Если нет – на выходе будет непосредственно результат.


Чанк Плэйсхолдер

Т.к. различные фиды возвращают различные placeholder, лучше использовать getFeed без ‘tpl’ параметра. Это даст вам массив данных и их значений. Эти ‘indexes’, или ключи каждого элемента в массиве, могут использоваться как плэйсхолдер.

Наиболее распространенные плэйсхолдеры:

  • title – заголок поста
  • link – прямая ссылка на пост
  • description – описание поста
  • pubdate – дата публикации поста
  • guid — GUID поста
  • author – автор поста
  • category – любые теги или ассоциации с постом
  • summary – краткое резюме поста
  • date_timestamp – временная метка поста

Twitter Feed MODX Revolution

Добавлено Shaun McCormick, изменено Mark Hamstra 20 октября 2011 (просмотр изменений)

Добавление Твиттера на сайт

Эта инструкция покажет вам как добавить фиды Твиттера на ваш сайт с помощью getFeed

Добавление вызова getFeed

После загрузки и инсталляции getFeed раместите сниппет на странице в том месте. Где планируете трансляцию фида Твиттера:

<ul>
[[!getFeed?
   &url=`http://twitter.com/statuses/user_timeline/123456789.rss`
   &tpl=`twitterFeedTpl`
   &limit=`3`
]]
</ul>

Убедитесь, что введен именно ваш ник или Twitter ID/

Таким образом мы вызовем данный сниппет без кэширования и укажем на новостную ленту Twittera.

Нам нужно только три последних твита. Для этого создайте ‘twitterFeedTpl чанк и добавьте в него:

<div>
    <p>[[+description]]
    
<a href="[[+link]]">[[+pubDate:ago]]</a> via [[+twitter.source]]</p>
</div>

Мы сделали это! Наш Твиттер фид рабоатет. Обратите внимание, у нас есть обратный фильтр, формат которого «X минут, X часов» назад.


Заметьте. Что плэйсхолдер, используемый для даты (так же как и другие плэйсхолдеры), может бытьзависимым от фида. Проверьте исходный XML код фида, чтобы убедиться, что дата сохранена и используется.


Фильтры phx ( модификаторы ) в modx revo













































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]].
toPlaceholder Помещает результат вывода тега в плейсхолдер, причем там где был помещен — ничего не выводится, а телепортируется в указанный плейсхолдер. До этого модификатора можно использовать любые другие модификаторы. [[+number:toPlaceholder=`итого`]], помещает содержимое [[+number]] в плейсхолдер [[+итого]]. Можно усложнять запись добавляя в левую часть выражения любые другие модификаторы: [[+number:is=`10`:then=`ровно 10`:else=`точно не 10!`:toPlaceholder=`итого`]], если [[+number]] = 10, тогда выводим в плейсхолдер [[+итого]]: «ровно 10», если же нет «точно не 10!».
cssToHead Прописывает файл CSS в <link> элемент перед закрывающим тегом </head>, где значение тега модификатора вписывается в аттрибут «href». Используется modX.regClientCSS. [[+cssTV:cssToHead]] перед закрывающим тегом </head>, регистрирует CSS, например: <link rel=»stylesheet» href=»значение +cssTv» type=»text/css» />
htmlToHead Вписывает значение тега перед закрывающим тегом </head>. Используется modX.regClientStartupHTMLBlock. [[+htmlTV:htmlToHead ]] перед закрывающим тегом </head>, регистрирует значение тега [[+htmlTV]] в HTML код.
htmlToBottom Вписывает значение тега перед закрывающим тегом </body>. Используется modX.regClientHTMLBlock. [[+htmlTV:htmlToBottom]] перед закрывающим тегом </body>, регистрирует значение тега [[+htmlTV]] в HTML код.
jsToHead Прописывает файл JS в <link> элемент перед закрывающим тегом </head>. Используется modX.regClientStartupScript. [[+jsTV:jsToHead]] перед закрывающим тегом </head>, регистрирует JS, например: <script type=»text/javascript» src=»значение +jsTv»></script>
jsToBottom Прописывает файл JS в <link> элемент перед закрывающим тегом </body>. Используется modX.regClientScript. [[+jsTV:jsToBottom]] перед закрывающим тегом </body>, регистрирует JS, например: <script type=»text/javascript» src=»значение +jsTv»></script>
urlencode Аналогично функции php urlencode. [[+stringi:urlencode]].
urldecode Аналогично функции php urldecode. [[+stringi:urldecode]].
filterPathSegment Аналогично механизму транслитезации заголовка (pagetitle) в урл (alias), конвертирует строку в формат ЧПУ. [[+pagetitle:filterPathSegment]].
tvLabel Возвращает подпись к полю из возможных значений TV. [[+myTv:tvLabel]].
Например есть TV настроенное селектом с параметрами ввода: Черный==0||Белый==1||Красный==3. Если значение myTv = 3, модификатор вернет слово Красный

Фильтры phx и модификаторы в modx revolution

Автор Алексей На чтение 12 мин. Просмотров 581 Опубликовано Обновлено

Сегодня полезная статья про фильтры phx и их модификаторы MODX Revo (другими словами различными условиями) при помощи которых вы сможете прямо внутри шаблонов, манипулировать значением различных тегов.

Фильтры ввода

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

Фильтры вывода

В MODX Revo фильтры вывода встроены прямо в движок  и ведут себя так же, как и PHx в Evolution. Синтаксис выглядит так:

[[element:modifier=`value`]]

Фильтры могут применяться последовательно. Для этого напишите их подряд (слева направо):

[[element:modifier:anothermodifier=`value`:andanothermodifier:yetanother=`value2`]]

Также фильтры могут применяться для модификации вывода сниппетов. Фильтр нужно прописывать перед всеми параметрами (перед знаком вопроса):

[[mySnippet:modifier=`value`? &mySnippetParam=`something`]]

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

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

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

Модификатор Описание Пример использования
if, input Передаёт произвольный текст на ввод, для следующего модификатора [[*id:input=`[[+placeholder]]`:is=`1`:then=`Да`:else=`Нет`]]
or Объединение нескольких модификаторов связью ИЛИ [[+numbooks:is=`7`:or:is=`8`:then=`Здесь 7 или 8 книг`:else=`Не уверен, сколько книг`]]
and Объединение нескольких модификаторов связью И [[+numbooks:gt=`7`:and:lt=`10`:then=`Здесь от 7 до 10 книг`:else=`Книг или меньше 7, или больше 10`]]
isequalto, isequal, equalto, equals, is, eq Сравнивает передаваемое значение с установленным. Если значения совпадают, выводится значение «then», если нет — «else» [[+numbooks:isequalto=`7`:then=`Здесь 7 книг`:else=`Не уверен, сколько книг`]]
notequalto, notequals, isnt, isnot, neq, ne Сравнивает передаваемое значение с установленным. Если значения НЕ совпадают, выводится значение «then», если нет — «else» [[+numbooks:notequalto=`7`:then=`Не уверен, сколько книг`:else=`Здесь 7 книг`]]
greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte То же, только условие «Больше или равно» [[+numbooks:gte=`7`:then=`Здесь 7 книг или больше`:else=`Здесь меньше семи книг`]]
isgreaterthan, greaterthan, isgt, gt То же, только условие «Строго больше» [[+numbooks:gt=`7`:then=`Здесь больше семи книг`:else=`Здесь 7 книг или меньше`]]
equaltoorlessthan, lessthanorequalto, el, le, islte, lte То же, только условие «Меньше или равно» [[+numbooks:lte=`7`:then=`Здесь 7 книг или меньше`:else=`Здесь больше семи книг`]]
islowerthan, islessthan, lowerthan, lessthan, islt, lt То же, только условие «Строго меньше» [[+numbooks:lte=`7`:then=`Здесь меньше семи книг`:else=`Здесь 7 книг или больше`]]
hide Скрывает элемент, если условие выполняется [[+numbooks:lt=`1`:hide]]
show Отображает элемент, если условие выполняется [[+numbooks:gt=`0`:show]]
then Используется для составления условий [[+numbooks:gt=`0`:then=`Книги в наличии!`]]
else Используется для составления условий (совместно с «then») [[+numbooks:gt=`0`:then=`Книги в наличии!`:else=`Простите, но все продано.`]]
memberof, ismember, mo Проверяет, является ли пользователь членом указанной группы пользователей [[!+modx.user.id:memberof=`Administrator`]]

Зачем они нужны и как ими пользоваться?

phx модификаторы облегчают жизнь modx разработчикам. Допустим у нас есть сайт с каруселью изображений (ну или с баннером), который нужно выводить только на главной странице. Для этого достаточно поместить его в отдельный чанк и затем вывести в шаблоне при помощи такой конструкции

[[*id:is=`1`:then=`[[$carusel]]`]]

Где:

  • 1 — id главной страницы;
  • $carusel — чанк с кодом карусели (баннера).

Здесь:

  • *id — выводит id текущей страницы;
  • :is=`1`:then= — проверяет равно ли *id == 1? и если равно, то выводится содержимое then;
  • $carusel — выводит чанк carusel.

Вместо *id, можно использовать и другие поля, например *template — выведет текущий используемый шаблон. Либо можно проверять заполнено или нет TV-поле (пусть будет *keywords) и если оно заполнено, то выводить его. Разберем данный случай поподробнее. Дано стандартная разметка:

<meta name="keywords" content="ключ, ключ, ключ">

Задача: не выводить эту строку, если TV keywords не заполнено, т.е. делаем проверку tv на пустоту и если оно не пустое, то выводим его.
Решение.

[[*keywords:!empty=`<meta name="keywords" content="*keywords">`]]

Нагрузки

Нужно следить за обработкой модификаторов, бездумное их использование вызовет лишние нагрузки. Вернемся к карусели, данная запись считывается слева направо и МОДХ выполняет все вложенные условия, в независимости от того, верное условие или нет, будет ли выводится на текущей странице содержимое [[$carusel]], в любом случае его содержимое обработается. В связи с этим более целесообразно переписать запись:

[[$caru[[*id:is=`1`:then=`sel`]]]]

В этом случае, содержимое чанка $carusel, будет обработано в случае, если выполняется условие *id:is=`1` т.к. выполняется [[*id:is=`1`:then=`sel`]]

и если id текущей страницы равно 1, последнее что обрабатывается — [[$carusel]], если id не равно 1, тогда — [[$caru]]. А если чанка $caru — нет в элементах, то и нагрузки не будет.

А вообще идеальный вывод будет выглядеть так.

[[$[[*id:is=`1`:then=`carusel`]]]]

Примечание! Вы можете комбинировать сколько угодно модификаторов под логику работы компонентов сайта, но главное помните, их основная суть — облегчить разработку, а не усложнять без того сложные задачи. Обычно, самый эффективный и действенный способ — это самый простой, так как чем проще и понятней конструкция — тем легче с ней будет работать в дальнейшем. Ниже перечислены основные модификаторы, которые можете использовать для любого тега МОДХ Рево.

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

Модификатор Описание Пример использования
cat Добавляет значение после тега [[+numbooks:cat=`книг`]]
lcase, lowercase, strtolower Переводит все буквы в нижний регистр [[+title:lcase]]
ucase, uppercase, strtoupper Переводит все буквы в верхний регистр [[+headline:ucase]]
ucwords Делает первую букву в словах заглавной [[+title:ucwords]]
ucfirst Делает первую букву в строке заглавной [[+name:ucfirst]]
htmlent, htmlentities Преобразует все символы в соответствющие HTML-сущности [[+email:htmlent]]
esc, escape Безопасно экранирует символы, используя регулярные выражения и `str_replace()`. Также экранирует теги MODX. [[+email:escape]]
strip Заменяет все переносы, табуляции и любое количество пробелов только одним пробелом [[+textdocument:strip]]
stripString Вырезает из строки указанную подстроку [[+name:stripString=`Mr.`]]
replace Производит замену подстрок [[+pagetitle:replace=`Mr.==Mrs.`]]
striptags, stripTags,notags,strip_tags Вырезает все теги (можно указать разрешенные теги). Не используйте для обеспечения безопасности. [[+code:strip_tags]]
len,length, strlen Выводит длину строки [[+longstring:strlen]]
reverse, strrev Переворачивает строку символ за символом [[+mirrortext:reverse]]
wordwrap Вставляет перенос строки после каждого n-ого символа (слова не разбиваются) [[+bodytext:wordwrap=`80`]]
wordwrapcut Вставляет перенос строки после каждого n-ого символа, даже если этот символ будет внутри слова [[+bodytext:wordwrapcut=`80`]]
limit Выводит определенное количество символов с начала строки (значение по умолчанию — 100) [[+description:limit=`50`]]
ellipsis Добавляет многоточие и обрезает строку, если она длиннее, чем указанное количество символов (по умолчанию — 100) [[+description:ellipsis=`50`]]
tag Экранирование. Отображает элемент так как он есть, без :tag. Для использования в документации [[+showThis:tag]]
add, increment, incr Прибавляет указанное число (значение по умолчанию +1) [[+downloads:incr]] [[+blackjack:add=`21`]]
subtract, decrement, decr Вычитает указанное число (значение по умолчанию -1) [[+countdown:decr]] [[+moneys:subtract=`100`]]
multiply, mpy Умножает на указанное число (значение по умолчанию *2) [[+trifecta:mpy=`3`]]
divide,div Делит на указанное число (значение по умолчанию /2) [[+rating:div=`4`]]
modulus,mod Возвращает модуль числа (по умолчанию: %2, возвращает 0 или 1) [[+number:mod]]
ifempty,default,empty, isempty Возращает значение модификатора, если значение тега пусто [[+name:default=`anonymous`]]
notempty, !empty, ifnotempty, isnotempty Возращает значение модификатора, если значение тега непусто [[+name:notempty=`Hello [[+name]]!`]]
nl2br Заменяет символы новой строки \n на HTML-тег br [[+textfile:nl2br]]
date Переводит таймстамп в текст, в соответствии с указанным форматом (формат даты) [[+birthyear:date=`%Y`]]
strtotime Переводит дату в виде текста в UNIX таймстамп [[+thetime:strtotime]]
fuzzydate Принимает таймстамп и возвращает дату в виде «Сегодня в 16:20 PM» [[+createdon:fuzzydate]]
ago Возвращает число секунд, минут, недель или месяцев, прошедших с даты, указанной в теге. [[+createdon:ago]]
md5 Создает MD5-хеш значения [[+password:md5]]
cdata Оборачивает вывод тегами CDATA [[+content:cdata]]
userinfo Возвращает запрашиваемое значение из профиля пользователя. Необходимо указывать ID пользователя [[!+modx.user.id:userinfo=`username`]]
isloggedin Возвращает 1, если пользователь авторизован в текущем контексте [[!+modx.user.id:isloggedin:is=`1`:then=`Yes`:else=`No`]]
isnotloggedin Возвращает 1, если пользователь неавторизован в текущем контексте [[!+modx.user.id:isnotloggedin:is=`1`:then=`No`:else=`Yes`]]
urlencode Конвертирует значение как URL, то есть применяет PHP фнукцию `urlencode()` [[+mystring:urlencode]]
urldecode Конвертирует значение как из URL, то есть применяет PHP фнукцию `urldecode()` [[+myparam:urldecode]]

Модификаторы для работы с пользователями нужно вызывать некэшированными, чтобы каждый юзер видел актуальные данные.

Использование модификаторов вывода совместно с параметрами

Если у тега есть параметры, то их необходимо прописывать сразу после модификатора:

[[!pdoResources:default=`К сожалению, ничего не найдено`?
    &tplFirst=`blogTpl`
    &parents=`2,3,4,8`
    &tvFilters=`blog_tags==%[[!tag:htmlent]]%`
    &includeTVs=`1`
]]

Создание пользовательского модификатора

Любой сниппет может использоваться как модификатор вывода. Для этого просто укажите имя сниппета вместо модификатора. К примеру, создадим сниппет [[makeExciting]], добавляющий к выводу определенное количество восклицательных знаков:

[[*pagetitle:makeExciting=`4`]]

Такой вызов тега передаст в сниппет makeExciting следующие параметры для обработки:

Параметр Значение Значение в примере Комментарий
input Значение элемента $input = `[[*pagetitle]]`; Значение элемента, к которому применяется модификатор.
options Значение модификатора $options = 4; Дополнительные параметры (после знака =)
token Тип элемента $token = *; Cимвол, определяющий тип тега.
name Имя элемента $name = `pagetitle`; Имя плейсхолдера, к которому применяется модификатор.
tag Весь тег полностью $tag = `[[*pagetitle:makeExciting=`4`]]`; Весь тег, полностью.

Приведем пример кода нашего сниппета makeExciting:

<?php
$defaultExcitementLevel = 1;
$result = $input;

if (isset($options)) {
    $numberOfExclamations = $options;
}
else {
    $numberOfExclamations = $defaultExcitementLevel;
}

for ($i = $numberOfExclamations; $i > 0; $i--) {
    $result = $result . '!';
}

return $result;

Тег выводит всё, что возвращает сниппет. В нашем случае он вернет значение тега [[*pagetitle]] с четырьмя восклицательными знаками.

Если сниппет вернет пустую строку, то на страницу будет выведено изначальное значение тега.

Цепочки фильтров (Множественные модификаторы)

Хорошим примером цепочки фильтров будет форматирование даты, например, так:

[[*publishedon:strtotime:date=`%d.%m.%Y`]]

Модификатор 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 вошедшего в систему пользователя. Конечно, вы можете заменить, его на [[*createdby]] или другое поле ресурса или даже на плейсхолдер, который возвращает числовое представление id пользователя.

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

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

Особое внимание обращаем на восклицательный знак [[!+modx.user.id]]. Он позволяет НЕ кэшировать содержимое вывода. Почему нужно не кешировать? Представим это так: на сайте 5 пользователей. Первый пользователь зашел на страницу с вызовом:

Добро пожаловать, [[!+modx.user.id:userinfo=`username`]]!

По задумке на этой странице, выводится приветственное сообщение пользователю. Так вот, если результат будет кешироваться, то при первом входе на эту страницу — сохранится имя пользователя который только что зашел — и всем остальным будет показываться не их имя, а имя того пользователя который вошел на эту страницу первым. Чтобы этого избежать — просто не кэшируем этот тэг, с помощью восклицательного знака перед вызовом [[!+modx…

P.s.: Не забываем отключать кэширование тегов, где нужно! Чтобы это сделать — нужно ИЗБАВЛЯТЬСЯ от восклицательных знаков ( ! ). Результаты большинства сниппетов вплоне себе могут работать из кэша.

Самые ходовые (популярные) фильтры и модификаторы MODX

условия if else

Чтобы составить условие на существование в БД параметра modx и при условие, что оно не пустое, то пишем следующий скрипт.

[[*id:gt=`0`:then=`В наличии!`:else=`Все продано.`]]

Проверка на значение: Если id равен 7, то выводим значение, иначе выполняем другое действие.

[[*id:is=`7`:then=`номер 7`:else=`не 7 номер`]]

Проверка на пустоту (empty)

К примеру у нас есть TV (дополнительное поле) «keywords» и соотвественно мета тег к нему и мы не хотим выводить его в код если поле пустое, тогда вывод будет следующим.

[[*keywords:!empty=`<meta name="keywords" content="[[*keywords]]">`]]

Обрезка текста (ellipsis)

Например, нам нужно вывести небольшой кусок текста (30 слов) пускай из поля content (содержимое — где редактор текста) и поставить в конце 3 точки.

[[*content:ellipsis=`30`]]

В следующем уроке разберем Форматирование дат и времени.

fastField — fastField | Документы MODX

Что такое fastField?

fastField — это плагин, который добавляет новый тип тега [[# ...]] . Его можно использовать для отображения одного поля, включая переменные шаблона и свойства, другого ресурса для MODX Revolution 2.2+. Он также может отображать значение суперглобальных переменных PHP $ _POST, $ _GET и других.

История

fastField был впервые выпущен 29 ноября 2012 года компанией argnist.

Скачать

Плагин можно получить через диспетчер пакетов или загрузить вручную из репозитория.

Использование

Структура тега следующая: [[# resource_id.field]]

, где resource_id — это идентификатор необходимого ресурса, например. «123», а поле — это поле ресурса, например. «Заголовок страницы». Для переменных шаблона поле должно начинаться с «tv.». Для свойств ресурса перед ним следует указать «свойства». или «собственность.».

Для использования с глобальными массивами вы должны заменить resource_id именем массива, например. «сообщение» и поле по имени переменной.

В общем, этот плагин заменяет сниппеты getResourceField и getReqParam.

Примеры

Вернуть заголовок страницы из ресурса с идентификатором 123:

  [[# 123.pagetitle]]
  

Возвращает интротекст родителя текущего ресурса и отображает описание пустого:

  [[# [[* родитель]].introtext: default = `[[# [[* родительский]]. описание]]`]]
  

Или, что более эффективно (см. Эту статью в блоге о MODX):

  [[[[[[* родитель]]. Introtext: default = `# [[* родительский]]. Описание`]]]]
  

Возвращает содержимое ресурсов в блоке rowTpl при использовании Wayfinder:

  [[# [[+ wf.docid]]. Content]]
  

Вернуть ТВ изображение с ресурса с id 10:

  [[# 10.tv.image]]
  

Возвращает свойство articlePerPage из ресурса с идентификатором 1 настраиваемого типа ресурса Articles

  [[# 1.properties.articles.articlesPerPage]]
  

Вернуть значение $ _POST [‘myVar’]:

  [[! # Post.myVar]]
  

Поддерживаемые глобальные массивы: $ _GET , $ _POST , $ _REQUEST , $ _SERVER , $ _FILES , $ _COOKIE , $ _SESSION . Тип массива после # нечувствителен к регистру. Имя элемента массива чувствительно к регистру. Вы должны использовать некэшированный тег, например. [[! # Get.name]] , для кэшированных ресурсов.

ВНИМАНИЕ! : Опасно использовать необработанные глобальные переменные на странице. Например, используйте выходной фильтр: stripTags для предотвращения XSS-атак (например, [[! # Get.name: stripTags]] )!

Как это работает

MODX использует класс modParser для анализа тегов по умолчанию. Этот плагин добавляет класс fastFieldParser, расширяющий modParser. Таким образом, если modParser будет изменен в новой версии MODX, поведение плагина будет непредсказуемым.

.

fastField — Дополнения MODX | Документы MODX

Что такое fastField?

fastField — это плагин, который добавляет новый тип тега [[# ...]] . Его можно использовать для отображения одного поля, включая переменные шаблона и свойства, другого ресурса для MODX Revolution 2.2+. Он также может отображать значение суперглобальных переменных PHP $ _POST, $ _GET и других.

История

fastField был впервые выпущен 29 ноября 2012 года компанией argnist.

Скачать

Плагин можно получить через диспетчер пакетов или загрузить вручную из репозитория.

Использование

Структура тега следующая: [[# resource_id.field]]

, где resource_id — это идентификатор необходимого ресурса, например. «123», а поле — это поле ресурса, например. «Заголовок страницы». Для переменных шаблона поле должно начинаться с «tv.». Для свойств ресурса перед ним следует указать «свойства». или «собственность.».

Для использования с глобальными массивами вы должны заменить resource_id именем массива, например. «сообщение» и поле по имени переменной.

В общем, этот плагин заменяет сниппеты getResourceField и getReqParam.

Примеры

Вернуть заголовок страницы из ресурса с идентификатором 123:

  [[# 123.pagetitle]]
  

Возвращает интротекст родителя текущего ресурса и отображает описание пустого:

  [[# [[* родитель]].introtext: default = `[[# [[* родительский]]. описание]]`]]
  

Или, что более эффективно (см. Эту статью в блоге о MODX):

  [[[[[[* родитель]]. Introtext: default = `# [[* родительский]]. Описание`]]]]
  

Возвращает содержимое ресурсов в блоке rowTpl при использовании Wayfinder:

  [[# [[+ wf.docid]]. Content]]
  

Вернуть ТВ изображение с ресурса с id 10:

  [[# 10.tv.image]]
  

Возвращает свойство articlePerPage из ресурса с идентификатором 1 настраиваемого типа ресурса Articles

  [[# 1.properties.articles.articlesPerPage]]
  

Вернуть значение $ _POST [‘myVar’]:

  [[! # Post.myVar]]
  

Поддерживаемые глобальные массивы: $ _GET , $ _POST , $ _REQUEST , $ _SERVER , $ _FILES , $ _COOKIE , $ _SESSION . Тип массива после # нечувствителен к регистру. Имя элемента массива чувствительно к регистру. Вы должны использовать некэшированный тег, например. [[! # Get.name]] , для кэшированных ресурсов.

ВНИМАНИЕ! : Опасно использовать необработанные глобальные переменные на странице. Например, используйте выходной фильтр: stripTags для предотвращения XSS-атак (например, [[! # Get.name: stripTags]] )!

Как это работает

MODX использует класс modParser для анализа тегов по умолчанию. Этот плагин добавляет класс fastFieldParser, расширяющий modParser. Таким образом, если modParser будет изменен в новой версии MODX, поведение плагина будет непредсказуемым.

.

fastField — Дополнения MODX | Документы MODX

Что такое fastField?

fastField — это плагин, который добавляет новый тип тега [[# ...]] . Его можно использовать для отображения одного поля, включая переменные шаблона и свойства, другого ресурса для MODX Revolution 2.2+. Он также может отображать значение суперглобальных переменных PHP $ _POST, $ _GET и других.

История

fastField был впервые выпущен 29 ноября 2012 года компанией argnist.

Скачать

Плагин можно получить через диспетчер пакетов или загрузить вручную из репозитория.

Использование

Структура тега следующая: [[# resource_id.field]]

, где resource_id — это идентификатор необходимого ресурса, например. «123», а поле — это поле ресурса, например. «Заголовок страницы». Для переменных шаблона поле должно начинаться с «tv.». Для свойств ресурса перед ним следует указать «свойства». или «собственность.».

Для использования с глобальными массивами вы должны заменить resource_id именем массива, например. «сообщение» и поле по имени переменной.

В общем, этот плагин заменяет сниппеты getResourceField и getReqParam.

Примеры

Вернуть заголовок страницы из ресурса с идентификатором 123:

  [[# 123.pagetitle]]
  

Возвращает интротекст родителя текущего ресурса и отображает описание пустого:

  [[# [[* родитель]].introtext: default = `[[# [[* родительский]]. описание]]`]]
  

Или, что более эффективно (см. Эту статью в блоге о MODX):

  [[[[[[* родитель]]. Introtext: default = `# [[* родительский]]. Описание`]]]]
  

Возвращает содержимое ресурсов в блоке rowTpl при использовании Wayfinder:

  [[# [[+ wf.docid]]. Content]]
  

Вернуть ТВ изображение с ресурса с id 10:

  [[# 10.tv.image]]
  

Возвращает свойство articlePerPage из ресурса с идентификатором 1 настраиваемого типа ресурса Articles

  [[# 1.properties.articles.articlesPerPage]]
  

Вернуть значение $ _POST [‘myVar’]:

  [[! # Post.myVar]]
  

Поддерживаемые глобальные массивы: $ _GET , $ _POST , $ _REQUEST , $ _SERVER , $ _FILES , $ _COOKIE , $ _SESSION . Тип массива после # нечувствителен к регистру. Имя элемента массива чувствительно к регистру. Вы должны использовать некэшированный тег, например. [[! # Get.name]] , для кэшированных ресурсов.

ВНИМАНИЕ! : Опасно использовать необработанные глобальные переменные на странице. Например, используйте выходной фильтр: stripTags для предотвращения XSS-атак (например, [[! # Get.name: stripTags]] )!

Как это работает

MODX использует класс modParser для анализа тегов по умолчанию. Этот плагин добавляет класс fastFieldParser, расширяющий modParser. Таким образом, если modParser будет изменен в новой версии MODX, поведение плагина будет непредсказуемым.

.

fastField — fastField | Документы MODX

Что такое fastField?

fastField — это плагин, который добавляет новый тип тега [[# ...]] . Его можно использовать для отображения одного поля, включая переменные шаблона и свойства, другого ресурса для MODX Revolution 2.2+. Он также может отображать значение суперглобальных переменных PHP $ _POST, $ _GET и других.

История

fastField был впервые выпущен 29 ноября 2012 года компанией argnist.

Скачать

Плагин можно получить через диспетчер пакетов или загрузить вручную из репозитория.

Использование

Структура тега следующая: [[# resource_id.field]]

, где resource_id — это идентификатор необходимого ресурса, например. «123», а поле — это поле ресурса, например. «Заголовок страницы». Для переменных шаблона поле должно начинаться с «tv.». Для свойств ресурса перед ним следует указать «свойства». или «собственность.».

Для использования с глобальными массивами вы должны заменить resource_id именем массива, например. «сообщение» и поле по имени переменной.

В общем, этот плагин заменяет сниппеты getResourceField и getReqParam.

Примеры

Вернуть заголовок страницы из ресурса с идентификатором 123:

  [[# 123.pagetitle]]
  

Возвращает интротекст родителя текущего ресурса и отображает описание пустого:

  [[# [[* родитель]].introtext: default = `[[# [[* родительский]]. описание]]`]]
  

Или, что более эффективно (см. Эту статью в блоге о MODX):

  [[[[[[* родитель]]. Introtext: default = `# [[* родительский]]. Описание`]]]]
  

Возвращает содержимое ресурсов в блоке rowTpl при использовании Wayfinder:

  [[# [[+ wf.docid]]. Content]]
  

Вернуть ТВ изображение с ресурса с id 10:

  [[# 10.tv.image]]
  

Возвращает свойство articlePerPage из ресурса с идентификатором 1 настраиваемого типа ресурса Articles

  [[# 1.properties.articles.articlesPerPage]]
  

Вернуть значение $ _POST [‘myVar’]:

  [[! # Post.myVar]]
  

Поддерживаемые глобальные массивы: $ _GET , $ _POST , $ _REQUEST , $ _SERVER , $ _FILES , $ _COOKIE , $ _SESSION . Тип массива после # нечувствителен к регистру. Имя элемента массива чувствительно к регистру. Вы должны использовать некэшированный тег, например. [[! # Get.name]] , для кэшированных ресурсов.

ВНИМАНИЕ! : Опасно использовать необработанные глобальные переменные на странице. Например, используйте выходной фильтр: stripTags для предотвращения XSS-атак (например, [[! # Get.name: stripTags]] )!

Как это работает

MODX использует класс modParser для анализа тегов по умолчанию. Этот плагин добавляет класс fastFieldParser, расширяющий modParser. Таким образом, если modParser будет изменен в новой версии MODX, поведение плагина будет непредсказуемым.

.

Добавить комментарий

Ваш адрес email не будет опубликован.