Разное

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Текущий документИдентификатор ресурса.
&fieldpagetitleПоле ресурса.
&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 не будет опубликован. Обязательные поля помечены *