Фильтры, они же модификаторы, в CMF MODx Revolution. Фильтры modx revo


ARTEMBLOG :: MODx Revo - фильтры ввода-вывода

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

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

[ [element:modifier=`value`] ]

Они также могут быть соединены (выполняется слева направо):

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

Вы также можете использовать их, чтобы изменить выход сниппета; внимание, модификатор идет  после имени сниппета и перед вопросительным знаком, например,

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

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

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

Модификатор

Описание

Пример

if, input

   

or

Логическое ИЛИ

[ [+numbooks:is=`5`:or:is=`6`:then=`There are 5 or 6 books!`:else=`Not sure how many books`] ]

and

Логическое И

 

isequalto, isequal, equalto, equals, is, eq

Равно  

[ [+numbooks:isequalto=`5`:then=`There are 5 books!`:else=`Not sure how many books`] ]

notequalto, notequals, isnt, isnot, neq, ne

Не равно

[ [+numbooks:notequalto=`5`:then=`Not sure how many books`:else=`There are 5 books!`] ]

greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte

Больше или равно

[ [+numbooks:gte=`5`:then=`There are 5 books or more than 5 books`:else=`There are less than 5 books`] ]

isgreaterthan, greaterthan, isgt, gt

Больше

[ [+numbooks:gt=`5`:then=`There are more than 5 books`:else=`There are less than 5 books`] ]

equaltoorlessthan, lessthanorequalto, el, le, islte, lte

Меньше или равно

[ [+numbooks:lte=`5`:then=`There are 5 or less than 5 books`:else=`There are more than 5 books`] ]

islowerthan, islessthan, lowerthan, lessthan, islt, lt

Меньше

[ [+numbooks:lt=`5`:then=`There are less than 5 books`:else=`There are more than 5 books`] ]

hide

Скрытие

[ [+numbooks:lt=`1`:hide] ]

show

Показ

[ [+numbooks:gt=`0`:show] ]

then

Тогда

[ [+numbooks:gt=`0`:then=`Now available!`] ]

else

Или

[ [+numbooks:gt=`0`:then=`Now available!`:else=`Sorry, currently sold out.`] ]

select

   

memberof, ismember, mo

Член

[ [+modx.user.id:memberof=`Administrator`] ]

Строковые модификаторы:

Модификатор

Описание

Пример

cat

Если не пусто

[ [+numbooks:cat=` books`] ]

lcase, lowercase, strtolower

Транформация в малые буквы

[ [+title:lcase] ]

ucase, uppercase, strtoupper

Трансформация в большие буквы

[ [+headline:ucase] ]

ucwords

Первая буква слова заглавная

[ [+title:ucwords] ]

ucfirst

Первая буква заглавная

[ [+name:ucfirst] ]

htmlent, htmlentities

Замена тегов HTML

[ [+email:htmlent] ]

esc,escape

Безопасно убирает символы

[ [+email:escape] ]

strip

Замена перевода каретки, табуляции и множества пробелов на один пробел

[ [+textdocument:strip] ]

stripString

Удаляет значение из строки

[ [+name:stripString=`Mr.`] ]

replace

Замена значения

[ [+pagetitle:replace=`Mr.==Mrs.`] ]

striptags, stripTags,notags,strip_tags

Убирает HTML теги

[ [+code:strip_tags=`</p> <p>`] ]

len,length, strlen

Длина строки

[ [+longstring:strlen] ]

reverse, strrev

Реверс строки

[ [+mirrortext:reverse] ]

wordwrap

Новая строка после указанного количества символов

[ [+bodytext:wordwrap=`80`] ]

wordwrapcut

Вставляет символ новой строки после определенного количества символов.

[ [+bodytext:wordwrapcut=`80`] ]

limit

Выводимое кол-во символов

[ [+description:limit=`50`] ]

ellipsis

Обрезание строки после указанного кол-ва символов

[ [+description:ellipsis=`50`] ]

tag

Отображает сырой элемент без: тега. Полезно для документации.

[ [+showThis:tag] ]

Если значение может изменяться динамически, то его следует сделать некэшированным. Например:

[ [+placeholder:default=`A default value!`] ]

Это означает, что значение может иногда быть пустым, а иногда нет. Зачем его хранить в кэше? Это может исключить то, что значение может появиться.

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

[ [!getResources:default=`Sorry - nothing matched your search.`?    &tplFirst=`blogTpl`    &parents=`2,3,4,8`    &tvFilters=`blog_tags==%%`    &includeTVs=`1`] ]

artemblog.ru

Фильтры или модификаторы в CMF MODx Revolution, примеры применения

19 октября&nbsp2011 г.

В этой статье Я бы хотел рассказать Вам о фильтрах (модификаторах) в MODx.

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

В этой статье Я буду говорить про MODx Revolution. Возможность применять фильтры существует благодаря сниппету PHx, который по умолчанию уже встроен в ядро MODx Revolution, в ядре же Evolution PHx отсутствует, поэтому на Evo его необходимо устанавливать отдельно.

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

Синтаксис фильтров выглядит следующим образом:

[[element:modifier=`value`]]

Очень удобно то, что их можно выстраивать в цепочки:

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

При этом, передавать параметры в сниппеты также возможно. Главное, чтобы фильтр прописывался между названием сниппета и вопросительным знаком:

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

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

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

МодификаторОписаниеПример
or  Может использоваться со строковыми модификаторами для организации отношения логического "И"  
and  Может использоваться со строковыми модификаторами для организации отношения логического "ИЛИ"  
isequalto, isequal, equalto, equals, is, eq  Сравнивает вывод с заданным значением и в случае совпадения продолжает парсинг тэга. Используется совместно с "then" и "else"  [[+numbooks:isequalto=`5`:then=`There are 5 books!`:else=`Not sure how many books`]]
notequalto, notequals, isnt, isnot, neq, ne  Сравнивает вывод с заданным значением и в случае не совпадения продолжает парсинг тэга. Используется совместно с "then" и "else"  [[+numbooks:notequalto=`5`:then=`Not sure how many books`:else=`There are 5 books!`]]
greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte 

Сравнивает вывод с заданным значением и в случае если вывод больше либо равен переданному значению продолжает парсинг тэга. Используется совместно с "then" и "else"

[[+numbooks:gte=`5`:then=`There are 5 books or more than 5 books`:else=`There are less than 5 books`]] 
isgreaterthan, greaterthan, isgt, gt 

Сравнивает вывод с заданным значением. Если вывод больше -продолжает парсинг. Используется с "then" и "else"

[[+numbooks:gt=`5`:then=`There are more than 5 books`:else=`There are less than 5 books`]]
equaltoorlessthan, lessthanorequalto, el, le, islte, lte  Сравнивает вывод с заданным значением и в случае если вывод меньше либо равен переданному значению продолжает парсинг тэга. Используется совместно с "then" и "else" [[+numbooks:lte=`5`:then=`There are 5 or less than 5 books`:else=`There are more than 5 books`]] 
islowerthan, islessthan, lowerthan, lessthan, islt, lt  Сравнивает вывод с заданным значением. Если вывод меньше -продолжает парсинг. Используется с "then" и "else" [[+numbooks:lte=`5`:then=`Менее 5 книг`:else=`Более 5 книг`]]
hide  Проверяет предшествующие условия. Если они были истинными - скрывает элемент. [[+numbooks:lt=`1`:hide]] 
show  Проверяет предшествующие условия. Если они были истинными - отображает элемент. [[+numbooks:gt=`0`:show]] 
then  Используется как следствие какого-либо условия [[+numbooks:gt=`0`:then=`Now available!`]] 
else  Используется как следствие какого-либо условия. Применяется совместно с "then" [[+numbooks:gt=`0`:then=`Now available!`:else=`Sorry, currently sold out.`]] 
memberof, ismember, mo  Возвращает результат проверки на принадлежность пользователя заданной группе. [[+modx.user.id:memberof=`Administrator`]] 

 

Строковые модификаторы 

МодификаторОписание Пример
cat Добавляет к выводу указанную строку, если вывод не пустой. [[+numbooks:cat=` books`]]
lcase, lowercase, strtolower Переводит все символы строки в нижний регистр. Идентично функции PHP strtolower [[+title:lcase]]
ucase, uppercase, strtoupper Переводит все символы строки в верхний регистр. Идентично функции PHP strtoupper [[+headline:ucase]]
ucwords Переводит первые буквы всех слов в строке в верхний регистр. Идентично функции PHP ucwords [[+title:ucwords]]
ucfirst Переводит первую букву строки в верхний регистр. Идентично функции PHP ucfirst [[+name:ucfirst]]
htmlent, htmlentities

Идентично функции PHP htmlentities. Использует текущее значение системного параметра "modx_charset" с флагом ENT_QUOTES

[[+email:htmlent]]
esc,escape Безопасно мнемонизирует символы, используя регулярные выражения и str_replace. Также понимает [, ] и ` [[+email:escape]]
strip Заменяет все переносы строк, табуляцию и множественные пробелы на один пробел. [[+textdocument:strip]]
stripString Удаляет из строки указанную продстроку. [[+name:stripString=`Mr.`]]
replace Заменяет одну подстроку другой. [[+pagetitle:replace=`Mr.==Mrs.`]]
striptags, stripTags,notags,strip_tags Удаляет все PHP и HTML тэги за исключением указанного. Идентично функции PHP strip_tags [[+code:strip_tags=`&lt;p&gt;`]]
len,length, strlen  Выводит длину строки. Идентично функции PHP strlen [[+longstring:strlen]]
reverse, strrev Идентично функции PHP strrev [[+mirrortext:reverse]]
wordwrap Идентично функции PHP wordwrap. Принимает оптимальное значение для установки позиции переноса слов. [[+bodytext:wordwrap=`80`]]
wordwrapcut Идентично функции PHP wordwrap с разрывом слов.  Принимает оптимальное значение для установки позиции переноса слов. [[+bodytext:wordwrapcut=`80`]]
limit Ограничивает (обрезает) длину строки в заданное количество символов. По умолчанию ограничение длины составляет 100 символов. [[+description:limit=`50`]]
ellipsis Обрезает строку до заданного количества символов и добавялет многоточие. По умолчанию ограничение составляет 100 символов. [[+description:ellipsis=`50`]]
tag Отображает вызываемый элемент без :tag. Полезно для документации, например, как у меня =) [[+showThis]]
math Возвращает результат вычислений (не рекомендуется т.к. создает нагрузку на процессор)  
add,increment,incr Возвращает значение наращенное на заданную величину (по умолчанию на единицу) [[+downloads:incr]] [[+blackjack:add=`21`]]
subtract,decrement,decr Декрементирует из значения заданную величину (по умолчанию: -1) [[+countdown:decr]] [[+moneys:subtract=`100`]]
multiply,mpy Возвращает результат умножения на число (по умолчанию: *2) [[+trifecta:mpy=`3`]]
divide,div Возвращает результат деления на число (умолчание: /2) Не допускается 0. [[+rating:div=`4`]]
modulus,mod Возвращает остаток от деления (Умолчание: %2, возвращает 0 или 1) [[+number:mod]]
ifempty,default,empty, isempty Возвращает заданную строку, если вывод пустой. [[+name:default=`anonymous`]]
notempty, !empty, ifnotempty, isnotempty Возвращает заданную строку, если вывод не пустой. [[+name:notempty=`Hello [[+name]]!`]]
nl2br Идентично функции PHP nl2br. Все переносы строк заменяет на <br> [[+textfile:nl2br]]
date Идентично функции PHP strftime. Формат передается в качестве значения. См. Date Formats. [[+birthyear:date=`%Y`]]
strtotime Идентично функции PHP strtotime. Применимо только к датам. См Date Formats. [[+thetime:strtotime]]
fuzzydate Возвращает дату в формате "сегодня в 13:40", "вчера в 18:40". [[+publishedon:fuzzydate]]
ago Возвращает количество секунд, минут, часов, недель и т.д от даты до текущего момента. Применимо только к датам [[+createdon:ago]]
md5 Идентично функции PHP md5. [[+password:md5]]
cdata Заключает строку в тэги CDATA. [[+content:cdata]]
userinfo Возвращает запрашиваемы пользовательские данные. Применимо к ID пользователя в MODx. В модификатор передается поле, которое необходимо возвратить. [[+modx.user.id:userinfo=`username`]]
isloggedin Возвращает "true" если пользователь авторизован в данном контексте. [[+modx.user.id:isloggedin]]
isnotloggedin Возвращает "true" если пользователь авторизован в данном контексте [[+modx.user.id:isnotloggedin]]
urlencode Идентично функции PHP urlencode [[+mystring:urlencode]]
urldecode Идентично функции PHP urldecode [[+myparam:urldecode]]

 

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

Сниппеты могут использоваться в качестве модификаторов. Для этого просто вместо название фильтра следует вписать имя сниппета. Например, у нас есть сниппет с названием "makeDownloadLink"

[[+file:makeDownloadLink=`notitle`]]

Этот вызов передаст в сниппет следующие параметры:

ПараметрЗначениеПример результата
input Значение вывода. Значение, которое передает
options Любое значение переданное в модификатор. 'notitle'
token Тип элемента, к которому применяется модификатор. + (токен перед `file`)
name Имя, к которому применяется модификатор. file
tag Строка вызова [[+file:makeDownloadLink=`notitle`]]

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

Примеры использования

Здесь приведен пример, когда фильтры вызываются друг за другом. Данный пример форматирует дату из строки в другой формат:

[[+mydate:strtotime:date=`%Y-%m-%d`]]

Прямой доступ к таблице modx_user_attributes из базы данных из сниппета может быть заменен на простое использование модификатора userinfo. Для получения нужного поля, необходимо в параметры модификатора передать название столбца из БД.

Внутренний ключ: [[!+modx.user.id:userinfo=`internalKey`]]<br>Имя пользователя: [[!+modx.user.id:userinfo=`username`]]<br>Полное имя: [[!+modx.user.id:userinfo=`fullname`]]<br>Роль: [[!+modx.user.id:userinfo=`role`]]<br>E-mail: [[!+modx.user.id:userinfo=`email`]]<br>Телефон: [[!+modx.user.id:userinfo=`phone`]]<br>Мобильный: [[!+modx.user.id:userinfo=`mobilephone`]]<br>Факс: [[!+modx.user.id:userinfo=`fax`]]<br>Дата рождения: [[!+modx.user.id:userinfo=`dob`:date=`%Y-%m-%d`]]<br>Пол: [[!+modx.user.id:userinfo=`gender`]]<br>Страна: [[+modx.user.id:userinfo=`country`]]<br>Область: [[+modx.user.id:userinfo=`state`]]<br>Почтовый индекс: [[+modx.user.id:userinfo=`zip`]]<br>Аватарка: [[+modx.user.id:userinfo=`photo`]]<br>Комментарий: [[+modx.user.id:userinfo=`comment`]]<br>Пароль: [[+modx.user.id:userinfo=`password`]]<br>Кэш пароля: [[+modx.user.id:userinfo=`cachepwd`]]<br>Дата последнего логина: [[+modx.user.id:userinfo=`lastlogin`:date=`%Y-%m-%d`]]<br>Дата текущего логина:[[+modx.user.id:userinfo=`thislogin`:date=`%Y-%m-%d`]]<br>Число входов: [[+modx.user.id:userinfo=`logincount`]]

[[!+modx.user.id]] по умолчанию принимает значение ID текущего пользователя. Вы можете заменить элемент на [[*createdby]] или любой другой элемент или плейсхолдер, который возвращает ID в виде числа.

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

Буду рад если статья будет кому-то полезна. Если где-то заметите ошибку - дайте мне знать =)

Материал взят отсюда

Автор: Артур Минимулин ⚫ 19 октября&nbsp2011 г. ⚫ Тэги:

artur.minimulin.ru

Фильтры 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 ).

 0или [ [+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

 Фильтры phx в modx revo[ [*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]].

urlencode

Аналогично функции php urlencode.

[ [+stringi:urlencode]].

urldecode

Аналогично функции php urldecode.

[ [+stringi:urldecode]].

freelgraf.in.ua

Фильтры 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Переведет только первую букву строки в верхний регистр, аналогично функции phpucfirst.[[*pagetitle:ucfirst]]
htmlent, htmlentitiesПреобразует все символы в соответствющие HTML сущности (для тех символов, для которых HTML сущности существуют), аналогично функции phphtmlentities. Использует текущие настройки системы "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]].
urlencodeАналогично функции php urlencode.[[+stringi:urlencode]].
urldecodeАналогично функции php urldecode.[[+stringi:urldecode]].

sergst88modx.blogspot.com

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

В данном уроке я хочу рассказать о том как организовать продвинутое портфолио с фильтром по категориями. Выглядит оно так:

Портфолио с фильтром

При наведении на картинку будет выводится кнопка для увеличения изображения, заголовок и описание см. картинку выше.

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

И так разметка переключателей категорий такого портфолио выглядит так:

<ul> <li><a data-filter="*" href="#">Все</a></li> <li><a data-filter=".websites" href="#">Сайты</a></li> <li><a data-filter=".social-networks" href="#">Социальные сети</a></li> <li><a data-filter=".form-style" href="#">Лого, Фирменный стиль и т.п.</a></li> </ul>

<ul>

<li><a data-filter="*" href="#">Все</a></li>

<li><a data-filter=".websites" href="#">Сайты</a></li>

<li><a data-filter=".social-networks" href="#">Социальные сети</a></li>

<li><a data-filter=".form-style" href="#">Лого, Фирменный стиль и т.п.</a></li>

</ul>

Вся логика заключается в том что все сортируется по css классам, например вот эта строчка:

<li class=»filter»><a data-filter=».websites» href=»#»>Сайты</a></li> здесь «Сайты» это ссылка на все элементы с классом websites.

Разметка отдельного элемента портфолио выглядит так:

<div><!-- item --> <div> <figure> <span> <span></span> <span> <!-- lightbox --> <a href="путь/название-картинки.jpg" data-plugin-options='{"type":"image"}'> <span></span> </a> </span> <!-- overlay title --> <div> <h4>Заголовок</h4> <ul> <li><a href="#">Описание</a></li> </ul> </div><!-- /overlay title --> </span> <img src="путь/название-картинки.jpg" alt=""> </figure> </div> </div><!-- /item -->

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<div><!-- item -->

<div>

<figure>

<span>

<span></span>

<span>

<!-- lightbox -->

<a href="путь/название-картинки.jpg" data-plugin-options='{"type":"image"}'>

<span></span>

</a>

</span>

<!-- overlay title -->

<div>

<h4>Заголовок</h4>

<ul>

<li><a href="#">Описание</a></li>

</ul>

</div><!-- /overlay title -->

</span>

<img src="путь/название-картинки.jpg" alt="">

</figure>

</div>

</div><!-- /item -->

Если вы заметили, то вверху блока обвертки элемента портфолио как раз присутствует класс websites о котором я сказал выше.

Ну а теперь самое главное.

Реализация (натяжка) портфолио с категориями на MODX при помощи компонента Gallery.

Идем в Приложения — Gallery — Создать альбом — создаем и сохраняем альбом

Создание альбома в MODX Gallery

Теперь отредактируем данный альбом

Редактировать альбом в MODX Gallery

 

И загрузим в него все наши фото:

загружаем файлы в альбом

Теперь редактируем все фото в альбоме, заполняем им имя, описание и самое главное заполняем поле Метки, именно по нему будет происходить сортировка.

редактируем каждое фото альбома по отдельности

редактируем каждое фото альбома по отдельности

Итак все подготовили, теперь на основе выше приведенной разметки создадим чанк tpl-portfolio-gallery для обвертки каждого изображения:

<div><!-- item --> <div> <figure> <span> <span></span> <span> <!-- lightbox --> <a href="[[+image_absolute]]" data-plugin-options='{"type":"image"}'> <span></span> </a> </span> <!-- overlay title --> <div> <h4>[[+name]]</h4> <ul> <li><a href="#">[[+description]]</a></li> </ul> </div><!-- /overlay title --> </span> <img src="[[+image_absolute]]" alt="[[+name]]"> </figure> </div> </div><!-- /item -->

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<div><!-- item -->

<div>

<figure>

<span>

<span></span>

<span>

<!-- lightbox -->

<a href="[[+image_absolute]]" data-plugin-options='{"type":"image"}'>

<span></span>

</a>

</span>

<!-- overlay title -->

<div>

<h4>[[+name]]</h4>

<ul>

<li><a href="#">[[+description]]</a></li>

</ul>

</div><!-- /overlay title -->

</span>

<img src="[[+image_absolute]]" alt="[[+name]]">

</figure>

</div>

</div><!-- /item -->

Здесь по сути не чего сложного, просто мы заменили все то что меняется на теги вывода Gallery, здесь

Теперь остается вывести саму галерею. делается это очень просто:

[[Gallery? &album=`1` &thumbTpl=`tpl-portfolio-gallery`]]

[[Gallery? &album=`1` &thumbTpl=`tpl-portfolio-gallery`]]

Выводим альбом с ID 1, и для оформления изображений используем чанк tpl-portfolio-gallery

В конечном итоге получаем следующее:

<ul> <li><a data-filter="*" href="#">Все</a></li> <li><a data-filter=".websites" href="#">Сайты</a></li> <li><a data-filter=".social-networks" href="#">Социальные сети</a></li> <li><a data-filter=".form-style" href="#">Фирменный стиль</a></li> </ul> <div> [[Gallery? &album=`1` &thumbTpl=`tpl-portfolio-gallery`]] </div>

<ul>

<li><a data-filter="*" href="#">Все</a></li>

<li><a data-filter=".websites" href="#">Сайты</a></li>

<li><a data-filter=".social-networks" href="#">Социальные сети</a></li>

<li><a data-filter=".form-style" href="#">Фирменный стиль</a></li>

</ul>

 

<div>

    [[Gallery? &album=`1` &thumbTpl=`tpl-portfolio-gallery`]]

</div>

Это все я ввел в содержимом при редактировании документа (предварительно отключив редактор текста).

 

Можете взглянуть на работу этого портфолио здесь: alex87.ru/portfolio

В следующем уроке мы разберем создание точно такого же портфолио, но с сылкой на страницу с его кейсом (или подробным описанием). Собираться оно будет из отдельных страниц, с TV полем Изображение и выводится при помощи PdoPage.

web-revenue.ru

Фильтры 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]].
urlencode Аналогично функции php urlencode. [[+stringi:urlencode]].
urldecode Аналогично функции php urldecode. [[+stringi:urldecode]].

modxcmf.blogspot.com


Prostoy-Site | Все права защищены © 2018 | Карта сайта