Создание пользовательского модификатора
Любой сниппет может использоваться как модификатор вывода. Для этого просто укажите имя сниппета вместо модификатора. К примеру, создадим сниппет [[makeExciting]]
, добавляющий к выводу определенное количество восклицательных знаков:
modx
[[*pagetitle:makeExciting=`4`]]
Такой вызов тега передаст в сниппет makeExciting следующие параметры для обработки:
Параметр | Значение | Значение в примере | Комментарий |
---|---|---|---|
input | Значение элемента | $input = `[[*pagetitle]]`; | Значение элемента, к которому применяется модификатор. |
options | Значение модификатора | $options = `4`; | Дополнительные параметры (после знака = ) |
token | Тип элемента | $token = `*`; | Символ, определяющий тип тега. |
name | Имя элемента | $name = `pagetitle`; | Имя плейсхолдера, к которому применяется модификатор. |
tag | Весь тег полностью | $tag = `[[*pagetitle:makeExciting=`4`]]`; | Весь тег, полностью. |
Приведем пример кода нашего сниппета makeExciting:
php
<?php
$defaultExcitementLevel = 1;
$result = $input;
if (isset($options)) {
$numberOfExclamations = $options;
}
else {
$numberOfExclamations = $defaultExcitementLevel;
}
for ($i = $numberOfExclamations; $i > 0; $i--) {
$result = $result . '!';
}
return $result;
Тег выводит всё, что возвращает сниппет. В нашем случае он вернет значение тега [[*pagetitle]]
с четырьмя восклицательными знаками.
Подсказка
Если сниппет вернет пустую строку, то на страницу будет выведено изначальное значение тега.