Плейсхолдеры MODX Revo

Плейсхолдер в CMF MODX Revolution (подробнее об этой системе управления сайтом) – один из основных элементов в общей структуре страницы сайта.

Перед выдачей сформированной страницы браузеру (который "понимает" HTML-теги), парсер MODX обрабатывает её шаблон на наличие "своих" тегов.

Тег MODX версии Revolution заключается в двойные квадратные скобки [[]].

Основные теги MODX и примеры использования:

  • [[*поле_ресурса]] – любое поле текущего ресурса (документа), включая дополнительные поля.
  • [[$название_чанка]] – чанк, содержащий фрагмент текста с HTML-разметкой или без нее, также может включать другие теги MODX, как то чанки, сниппеты, поля и проч.
  • [[название_сниппета]] – элемент PHP-кода (сниппет). Как правило, сниппет получает какие-либо параметры или данные, а затем выдает обработанную информацию.

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

    Простой пример, работа со строкой – удаляем из начала строки заданное число символов. В левой панели, вкладка Элементы, раздел Сниппеты, кликаем (+) Новый сниппет. Имя – пусть будет cutting5. Добавляем строку:

    <?php
    return mb_substr($input, 5);

    Здесь: переменная $input – значение, которое находится по левую строну от символа :, запускающего обработку фильтром. Функцию вызываем мультибайтовую, чтобы корректно работать с кириллицей. Нумерация символов в строке начинается с 0.

    Пример вызова сниппета как фильтра вывода [[*pagetitle:cutting5]]

    Результат работы для текущей страницы: холдеры MODX Revo.

    То же самое, с передачей параметров. Код сниппета (назовем mb_cutting):

    <?php
    if ((int)$options && ($options < mb_strlen($input))) { //проверка на правильность данных
      return mb_substr($input, $options);
    }
    else {
    return false; //возврат неизменной строки
    }

    Здесь: переменная $options передается в виде =`значение` после названия фильтра (сниппета).

    Вызов [[*pagetitle:mb_cutting=`13`]]

    Результат работы для текущей страницы: MODX Revo.

  • В более серьезных сниппетах число управляющих параметров, передаваемых и выводимых данных не в пример больше и размещаются они уже по следующему принципу:

  • [[+название_плейсхолдера]]
  • Системные настройки и события

    И, возвращаясь к теме заметки, вывод системных переменных (системных настроек):

  • [[++ключ_переменной]] – управление производится через меню Системные настройки (шестеренка в правом верхнем углу панели). Для вызова настройки используется значение ключа переменной. Например, [[++emailsender]] – адрес отправителя почты с сайта, [[++site_name]] – название сайта, и проч.
  • Еще, такой же синтаксис имеют плейсхолдеры компонента ClientConfig (документация). Их можно посмотреть в меню ПриложенияКонфигурация (если этот компонент установлен).

    Теги компонента ClientConfig

  • [[~id_номер_ресурса]] – ссылка на документ.
  • [[%имя_языковой_строки]] – вывод значения языковой строки из словаря – меню Управление словарями (через шестеренку).
  • Встречается такой синтаксис тега MODX:

  • [[сниппет@набор_параметров]] – здесь показан способ определения параметров через какой-либо составленный набор. Настройка через меню Наборы параметров.
  • Управление кешированием для тега производится с помощью флага ! . Устанавливается сразу после открывающих скобок:

  • [[!сниппет]], [[!*поле]], [[!+плейсхолдер]] и т.д.

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

  • [^qt^] – время запроса к базе данных.
  • [^q^] – количество запросов к базе данных.
  • [^p^] – время "парсинга" страницы (обработки тегов).
  • [^t^] – суммарное время обработки страницы, включая рендер.
  • [^s^] – источник данных страницы (база данных или кеш)
Привилегия.ру

Метки: modx revolution