Фильтры в 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
21subtract,decrement,decr Вычитает указанное число (значение по умолчанию -1) -1
-100multiply,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`]] [[!+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 Revolution
Посмотреть все услуги
Оптимизация сайта
Заказав услуги по технической оптимизации сайта мы избавим вас от ошибок присутствующих на сайте, а так же увеличим скорость работы вашего сайта.
Создание сайта на MODX
Мы создадим для вас такой сайт, который подойдет именно в вашем случае и станет отличным инструментом привлечения клиентов и увеличения продаж.
Перенос сайта на MODX
Работа по переносу сайта на MODX осуществляется в максимально короткие сроки. Стоимость зависит от сложности переносимого сайта
Продвижение сайта на MODX
Если вы хотите получить быстрые и ощутимые результаты, подняться в топ в минимальные сроки, то доверьте нам продвижение своего сайта.