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}'>
При создании страницы были использованы материалы: