"Уже сегодня делай то, о чем другие будут думать завтра!"

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

Сайдбар

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

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

В MODX Revolution фильтры вывода используются как один или нескольких модификаторов вывода, они схожи с PHx вызовами в MODx Evolution, но отличаются тем, что уже изначально встроены в ядро.


Синтаксис модификаторов:

[[element:modifier=`value`]]

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

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

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

[[Snippet:modifier=`value`? &SnippetParam=`something`]]

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

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

Модификатор Описание Пример использования
if, input

or Объединение нескольких модификаторов связью ИЛИ Не уверен, сколько товаров
and Объединение нескольких модификаторов связью И
isequalto, isequal, equalto, equals, is, eq Сравнивает передаваемое значение с установленным. Если значения совпадают, выводится значение «then», если нет — «else» Не уверен, сколько товаров
notequalto, notequals, isnt, isnot, neq, ne Сравнивает передаваемое значение с установленным. Если значения НЕ совпадают, выводится значение «then», если нет — «else» Не уверен, сколько товаров
greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte То же, только условие «Больше или равно» Здесь меньше 10 товаров
isgreaterthan, greaterthan, isgt, gt То же, только условие «Строго больше» Здесь 10 товаров или меньше
equaltoorlessthan, lessthanorequalto, el, le, islte, lte То же, только условие «Меньше или равно» Здесь 10 товаров или меньше
islowerthan, islessthan, lowerthan, lessthan, islt, lt То же, только условие «Строго меньше» Здесь меньше 10 товаров
hide Скрывает элемент, если условие выполняется
show Отображает элемент, если условие выполняется
then Используется для составления условий
else Используется для составления условий (совместно с «then») Простите, но все продано.
select

memberof, ismember, mo Проверяет, является ли пользователь членом указанной группы пользователей 0

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

Модификатор Описание Пример использования
cat Добавляет значение после тега товаров
lcase, lowercase, strtolower Переводит все буквы в нижний регистр
ucase, uppercase, strtoupper Переводит все буквы в верхний регистр
ucwords Делает первую букву в словах заглавной
ucfirst Делает первую букву в строке заглавной
htmlent, htmlentities Преобразует все символы в HTML-сущности
esc,escape Безопасно экранирует символы, используя регулярные выражения и str_replace. Также экранирует символы [, ] и `
strip Заменяет все переносы, табуляции и любое количество пробелов только одним пробелом
stripString Вырезает из строки указанную подстроку
replace Производит замену подстрок
striptags, stripTags,notags,strip_tags Вырезает все теги (можно указать разрешенные теги).
len,length, strlen Выводит длину строки 0
reverse, strrev Переворачивает строку символ за символом
wordwrap Вставляет перенос строки после каждого n-ого символа (слова не разбиваются)
wordwrapcut Вставляет перенос строки после каждого n-ого символа, даже если этот символ будет внутри слова
limit Выводит определенное количество символов с начала строки (значение по умолчанию — 100)
ellipsis Добавляет многоточие и обрезает строку, если она длиннее, чем определенное количество символов (значение по умолчанию — 100)
tag Экранирование. Отображает элемент так как он есть, без:tag. Для использования в документации [[+showThis]]
math Возвращает результат продвинутых вычислений (нагружает на процессор. Не рекомендуется)
add,increment,incr Прибавляет указанное число (значение по умолчанию +1) 1
21
subtract,decrement,decr Вычитает указанное число (значение по умолчанию -1) -1
-100
multiply,mpy Умножает на указанное число (значение по умолчанию *2) 0
divide,div Делит на указанное число (значение по умолчанию /2) 0
modulus,mod Возвращает модуль числа
(по-умолчанию: %2, возвращает 0 или 1))
0
ifempty,default,empty, isempty Возвращает значение модификатора, если значение тега пусто anonymous
notempty, !empty, ifnotempty, isnotempty Возвращает значение модификатора, если значение тега НЕ пусто
nl2br Заменяет символы новой строки (\n) на HTML-тег <br />
date Переводит таймстамп в текст, в соответствии с указанным форматом (Формат даты)
strtotime Переводит дату в виде текста в UNIX таймстамп
fuzzydate Возвращает дату в формате «вчера, сегодня, …». Принимает значение даты.
ago Возвращает число секунд, минут, недель или месяцев, прошедших с даты, указанной в теге.
md5 Создает MD5-хеш значения d41d8cd98f00b204e9800998ecf8427e
cdata Оборачивает вывод тегами CDATA
userinfo Возвращает запрашиваемое значение из профиля пользователя. Необходимо указывать ID пользователя
isloggedin Возвращает true, если пользователь аутентифицирован в текущем контексте
isnotloggedin Возвращает true, если пользователь НЕаутентифицирован в текущем контексте 1
urlencode Конвертирует значение в URL
urldecode Конвертирует значение из URL

Кеширование

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

К сожалению, ничего не найдено

Результат работы примера может быть пустым, а может и нет. Как мы можем кешировать это? Пример, приведенный выше, отражает природу модификатора вывода.
Возможно применение модификаторов вывода в кешируемом плейсхолдере — но только если Сниппет может быть кеширован. Иначе, мы совершаем алогичное действие — пытаемся кешировать то, что не является статическим содержимым.
Получаем правило: нельзя устанавливать кеширование плейсхолдера в некешируемом сниппете, если результат работы сниппета может изменяться.

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

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

 [[!pdoResources:default=`К сожалению, ничего не найдено`?
&parents=`5`
&depth=`5`
&tpl=`news_tpl`
&includeTVs=`image`
]]

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

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

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

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

Параметр Значение Значение в примере
input Значение элемента В переменной $input будет значение заголовка страницы (Фильтры ввода-вывода)
options Значение модификатора (после знака =) $options = 4;
token Тип элемента $token = «*«; (символ, определяющий, что данный элемент — поле ресурса
name Имя элемента $name = «pagetitle»;
tag Весь тег полностью $tag = «Фильтры ввода-вывода«;

Модификатор 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]] возвращает ID вошедшего в систему пользователя. Вы, конечно, можете заменить, его на 1 или другое поле ресурса или любой плейсхолдер, который возвращает числовое представление ID пользователя.

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

[[!+modx.user.id]] — Выведет ID пользователя
[[!+modx.user.username]] — Выведет логин пользователя

Лучше всего эти плейсхолдеры вызывать некешируемыми, чтобы избежать неожиданных результатов.

Также фильтры можно использовать несколькими способами (что уменьшает время их выполнения):

 // Используем модификатор:



// Используем сниппет:
[[lcase? &subject=`title`]]
[[notempty? &subject=`something` &then=`Hello[[+name]]`]]

// Используем общий сниппет фильтра:
[[Filter? &subject=`title` &operator=`lcase`]]
[[Filter? &subject=`something` &operator=`notempty` &meter=`Hello [[+name]]`]]
Хостинг для MODX

Смотрите также:

Asset Manager MODX Revolution

Asset Manager MODX Revolution

Смотреть

Quickstart Buttons

Quickstart Buttons

Смотреть

Как обновить MODX Revolution

Как обновить MODX Revolution

Смотреть


Услуги по MODX Revolution

Посмотреть все услуги

Оптимизация сайта

Оптимизация сайта

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

Подробнее & Заказать

Создание сайта на MODX

Создание сайта на MODX

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

Подробнее & Заказать

Перенос сайта на MODX

Перенос сайта на MODX

Работа по переносу сайта на MODX осуществляется в максимально короткие сроки. Стоимость зависит от сложности переносимого сайта

Подробнее & Заказать

Продвижение сайта на MODX

Продвижение сайта на MODX

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

Подробнее & Заказать

Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

telegram: @Accusser
skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Sign In