MODX. Встроенные модификаторы Fenom
Отредактировано: 14 Апреля 2023
Тут представлен список предустановленных модификаторов Fenom, которые присутствуют в CMF MODX.
Лучше ознакомиться со списком модификаторами заранее, поскольку при решении задач не всегда может возникнуть мысль поискать такое решение в модификаторах, в то время как такое решение уже реализовано для простого и удобного использования.
Модификаторы применяются по следующей схеме:
// { объект | модификатор : 'значение' | модификатор : 'значение'}
{$_modx->resource.pagetitle | limit : '3' | lowercase}
Список встроенных модификаторов Fenom
| Модификатор | Описание |
|---|---|
| date |
Вывод текущей даты или ее форматирование через функцию date. Если переменная пуста, будет получено текущее время.
|
| date_format | Вывод текущей даты или ее форматирование через функцию strftime. Если переменная пуста, будет получено текущее время. В модификаторе необходимо использовать конверсионные указатели:
|
| escape (e) | Экранирование строки. Используется для кодирования или экранирования спецсимволов по алгоритмам экранирования HTML, URL’ов и Javascript. По умолчанию активирован режим экранирования HTML.
Имеет несколько параметров. Первым параметром принимает режим работы, вторым — кодировку.
Режимы работы:
|
| unescape |
Декодирование переменной. Модификатор
Режимы работы:
|
| strip | Убирает пробелы в начале и конце текста. Если указан дополнительный параметр, то убираются и все повторяющиеся пробелы в тексте.
|
| length (len, strlen) |
Подсчитывает длину строки, массива, объекта. Может принимать строку или массив.
|
| count |
Подсчитывает количество элементов.
|
| in |
Оператор проверки наличия подстроки в строке или значения в массиве.
|
| iterable | Проверка возможности перебора переменной.
|
| replace |
Заменяет все вхождения искомой строки на строку для замены. Принимает 2 обязательных параметра: искомую строку и строку замены.
|
| ereplace | Выполняет поиск и замену по регулярному выражению.
Выполняет поиск совпадений в строке
Подмаски нумеруются слева направо, начиная с единицы. Для использования обратного слэша, его необходимо продублировать.
Замечание: во избежание скрытых ошибок при выполнении сущностей регулярные выражения стоит помещать в одинарные кавычки. |
| match |
Проверяет совпадение строки с паттерном. Специальные символы:
|
| ematch |
Выполняет проверку на соответствие регулярному выражению.
|
| split |
Разбивает строку и возвращает массив, используя первый параметр в качестве разделителя (по умолчанию —
|
| esplit | Разбивает строку по регулярному выражению в первом параметре (по умолчанию /,\s*/).
|
| join |
Объединяет элементы массива в строку, используя первый параметр в качестве соединителя (по умолчанию —
|
| number (number_format) | Форматирование числа php функцией number_format().
Функция принимает один, два или четыре аргумента (не три):
|
| md5, sha1, crc32 | Подсчёт контрольной суммы строки разными алгоритмами.
|
| urldecode, urlencode, rawurldecode | Кодирование и декодирование строки URL соответствующей PHP функцией.
|
| base64_decode, base64_encode | Кодирование и декодирование строки алгоритмом base 64.
|
| json_encode (toJSON), json_decode (fromJSON) | Кодирование и декодирование JSON формата.
|
| http_build_query | Генерация URL-кодированной строки из массива.
|
| print_r | Распечатка переменной через соответствующую PHP функцию. Если передан параметр, то можно сохранить результат.
|
| var_dump (dump) | Распечатка переменной вместе с типом.
|
| nl2br | Вставляет HTML-код разрыва строки <br> перед каждым переводом строки.
|
| lower (low, lcase, lowercase, strtolower) | Переводит строку в нижний регистр. Является эквивалентом функции PHP <a href="http://docs.php.net/manual/ru/function.strtolower.php" rel="noopener" target="_blank">strtolower()</a>.
|
| upper (up, ucase, uppercase, strtoupper) | Переводит строку в верхний регистр. Является эквивалентом функции PHP <a href="http://docs.php.net/manual/ru/function.strtoupper.php" rel="noopener" target="_blank">strtoupper()</a>.
|
| ucwords | Преобразует в верхний регистр первый символ каждого слова в строке, а остальные символы в нижний.
|
| ucfirst | Преобразует в верхний регистр первый символ первого слова в строке, а остальные символы в нижний.
|
| htmlent (htmlentities) | Преобразует все возможные символы в соответствующие HTML-сущности.
|
| limit |
Обрезает строку до указанного количества символов.
Если в строке есть html теги, они останутся не закрытыми. Для предотвращения неправильного отображения html используйте модификатор truncate. |
| truncate (ellipsis) |
Обрезает переменную до определенной длинны, по умолчанию — 80 символов.
Этот модификатор имеет несколько параметров:
Применение truncate с параметрами:
|
| esc (tag) | Экранирование HTML и MODx тегов.
|
| notags (striptags, stripTags, strip_tags) | Удаление HTML тегов из строки.
|
| stripmodxtags | Удаление тегов MODx из строки.
|
| cdata | Оборачивает вывод тегами CDATA. Обычно это нужно для экранирования значений в XML разметке.
|
| reverse (strrev) | Переворачивает строку или массив с конца в начало.
|
| wordwrap | Вставляет перенос строки после каждого n-ого символа (слова не разбиваются).
|
| wordwrapcut | Вставляет перенос строки после каждого n-ого символа, даже если этот символ будет внутри слова.
|
| fuzzydate | Выводит дату относительно сегодня и вчера, используя словари системы. Если прошло уже больше 2х дней, то форматирует дату через strftime
|
| declension (decl) | Склоняет слово, следующее за числом по правилам русского языка. Например: 1 яблоко, 2 яблока, 10 яблок. Вторым параметром указывается выводить ли само число, по умолчанию выводится только подходящий вариант слова. Разделитель вариантов можно задавать третьим параметром, по умолчанию |
|
| ismember (memberof, mo) | Проверка принадлежности пользователя к группе или группам пользователей MODx. Если переменная пуста, то проверка проводится для текущего пользователя.
|
| isloggedin, isnotloggedin | Проверка авторизации текущего пользователя в контексте. Если контекст не указан, то проверяется текущий.
|
| url | Генерация ссылки на документ системы через modX::makeUrl.
|
| lexicon | Вывод записи из словарей системы через modX:<strong>lexicon</strong>. Некоторые словари предварительно нужно загрузить.
|
| user (userinfo) | Вывод поля пользователя системы.
|
| resource | Вывод поля документа системы. Можно выводить и ТВ параметры.
|
Функция распечатки и экранирования любых переменных. Используется для отладки, когда нужно узнать, что находится внутри. Единственный параметр указывает, нужно ли обернуть данные в тег <pre> (по умолчанию — да).
|
|
| setOption | Выставление значения в массив modX:config. Обязательно нужно указать ключ значения в массиве.
|
| option (getOption) | Получение значения из массива modX::config.
|
| setPlaceholder (toPlaceholder) | Выставление значения в массив modX::placeholders. Обязательно нужно указать ключ значения в массиве.
|
| placeholder (fromPlaceholder) | Получение значения из массива modX::placeholders.
|
| gettype | Возвращает тип переменной.
|
Размещение файлов и кода
Для работы функций регистрации скриптов и файлов, на странице должны быть теги head и body.
| Модификатор | Описание |
|---|---|
| cssToHead | Регистрация CSS кода в шапке страницы.
|
| htmlToHead | Регистрация произвольного HTML в шапке страницы.
|
| htmlToBottom | Регистрация произвольного HTML в подвале страницы.
|
| jsToHead | Регистрация JavaScript файла в шапке страницы. Если передать параметром true, то можно регистрировать сразу код.
|
| jsToBottom | Регистрация JavaScript в подвале страницы. Если передать параметром true, то можно регистрировать сразу код.
|
Аналоги Php функций
| Модификатор | Описание |
|---|---|
| is_string | Проверяет, является ли переменная строкой |
| is_array | Определяет, является ли переменная массивом |
| is_numeric | Проверяет, является ли переменная числом или строкой, содержащей число |
| is_int | Проверяет, является ли переменная целым числом |
| is_object | Проверяет, является ли переменная объектом |
| is_double | Проверяет, является ли переменная числом с плавающей точкой |
| ip2long | Конвертирует строку, содержащую IPv4-адрес в целое число |
| long2ip | Конвертирует целое число в IPv4-адрес |
PCRE модификаторы
Модификаторы работающие на библиотеке Perl Compatible Regular Expressions, которая реализует работу регулярных выражений в стиле Perl (с некоторыми отличиями).
| Модификатор | Описание |
|---|---|
| preg_quote | Добавляет обратный слеш перед каждым служебным символом. Служебными считаются следующие символы:
|
| preg_match | Выполняет проверку на соответствие регулярному выражению.
|
| preg_get |
Выполняет поиск по регулярному выражению, результат содержит первый набор вхождений.
|
| preg_get_all | Выполняет поиск по регулярному выражению, результат содержит набор всех вхождений. |
| preg_grep | Возвращает массив вхождений, которые соответствуют шаблону.
|
| preg_replace | Выполняет поиск и замену по регулярному выражению.
|
| preg_filter | Выполняет поиск и замену по регулярному выражению идентична preg_replace за исключением того, что возвращает только те значения, в которых найдено совпадение. |
| preg_split | Разбивает строку по регулярному выражению.
|
Собственные модификаторы Fenom
Начиная с версии 2.6.0 в fenom появилась возможность создавать собственные модификаторы, при помощи плагина и события pdoToolsOnFenomInit.
<?php
/** @var modX $modx */
switch ($modx->event->name) {
case 'pdoToolsOnFenomInit':
/** @var Fenom $fenom
Получаем переменную $fenom при его первой инициализации.
Теперь можем вызывать его методы.*/
/** Добавим модификатор вывода имени домена сайта из произвольной ссылки.*/
$fenom->addModifier('website', function ($input) {
if (!$url = parse_url($input)) {
return $input;
}
$output = str_replace('www.', '', $url['host']);
return strtolower($output);
});
break;
}
Данный плагин позволяет вызывать модификатор website из любого места в коде. Поскольку этот модификатор является внутренним методом Fenom и загружается один раз — при его инициализации, то и работает он быстрее любого сниппета.
Пример создания собственного модификатора ignore
<?php
/** @var modX $modx */
switch ($modx->event->name) {
case 'pdoToolsOnFenomInit':
$fenom->addModifier('ignore', function ($input) {
$output = '{ignore}' . $input . '{/ignore}';
return $output;
});
break;
}
Применение:
<div data-attr='{'{"0":{"items":1,"nav":"false"},"100":{"items":2}}' | ignore}'>
При создании страницы были использованы материалы: