Синтаксис тегов

Синтаксис тегов MODX Разработка сайтов
Теги - это элементы MODX, которые позволяют вызывать HTML или PHP код, текст из словаря или переменные документа. Синтаксис тегов унифицирован и все они объявляются в квадратных скобках с символом перед наименованием, что упрощает логику работы и повышает производительность.

Варианты тегов MODX

MODX предоставляет удобный массив тегов, различаемых токеном или набором токенов, которые появляются перед строкой. В приведенной ниже таблице указаны эти токены и где и как они могут быть использованы.

Тип Токен Пример Использование
Коммент - [[-Comment]] Определяет неразобранный комментарий.
Например: [[-Это комментарий. Он будет удален из вывода страницы.]]
Поле ресурса * [[*fieldName]] Выводит значение поля, связанного с текущим ресурсом.
Например: [[*pagetitle]]
Переменная шаблона (TV) * [[*tvName]] Выведите значение переменной шаблона.
Например: [[*tags]]
Чанк $ [[$chunkName]] Определяет статический сниппет кода для визуализации.
Например: [[$header]]
Сниппет [[snippetName]] Определяет сниппет кода PHP для выполнения.
Например: [[pdoResources]]
Плейсхолдер + [[+placeholder]] Определяет плейсхолдер для значений из результатов запроса.
Например: [[+pagetitle]]
Ссылка ~ [[~link]] Возвращает ссылку, полученную из значения.
Например: [[~3? &scheme=full]]
Настройки ++ [[++settingName]] Определяет заполнитель специально для значений, определенных в системных настройках.
Например: [[++site_name]]
Язык % [[%language]] Например: [[%string? &language=en &namespace=generic &topic=topic]]

Деконструкция тега MODX

Тег MODX может быть расширен за счет дополнительных индикаторов и свойств. Приведенная ниже таблица полностью разбирает тег MODX и иллюстрирует, как и где можно использовать эти необязательные индикаторы и свойства.

Тип Использование
[[ Открытие тега MODX.
! указание, что тег НЕкешируемый (необязательно)
Token тип элемента $ — чанк, * — поле элемента или ТВ, + — плейсхолдер, и т. д.
Смотрите выше для большего количества вариантов
Name Имя значения запрашиваемого элемента.
@propertysetН Набор свойств для использования (необязательно)
:modifier=`value` Определяет выходной фильтр или модификатор, который будет использоваться (необязательно)
Пример::gt=`0`:then=`Товар в доступен!`
? Указывает MODX, что свойства сопровождают этот вызов.
Требуется, если присутствуют свойства
&property=`value` Определяет свойство и значение, которое будет использоваться с вызовом. Каждый набор свойств разделен &.
Например: &prop1=`1` &prop2=`2`
]] Закрытие тега MODX.

Построение тега MODX

Используя и комбинируя всю вышеуказанную информацию, мы можем создать сложный тег MODX, который будет выглядеть следующим образом:
[[!MySnippet@myPropSet:filter1:filter2=`modifier`? &prop1=`x` &prop2=`y`]]
Однако, хотя MODX позволяет использовать сложные условные фильтры, пользователи должны быть осторожны при построении сложной логики тегов. В отличие от PHP, если у вас недопустимый синтаксис тега MODX, нет полезных сообщений с номерами строк, указывающими местоположение ошибки.

Наличие тегов, требующих отладки, отрицательно сказывается на чистом виде слоя. Держите их в чистоте и простоте.

Хорошее эмпирическое правило заключается в том, что ваши теги должны помещаться в одну строку, даже если вы разметите их на несколько строк для удобства чтения. Если вы полагаетесь на операторы if и другие условия в своих тегах MODX, тогда может потребоваться пересмотр логики потока.

Примечание MODX неоднозначен к пробелам, поэтому оба приведенных ниже примера также будут приемлемы:
[[!pdoResources?
&parents=`21`
&limit=`7`
]]

Свойства

Все теги MODX могут принимать свойства, не только Сниппеты.

В приведенном ниже примере у нас есть простой блок с именем «Hello».
Привет [[+name]]!
Внутри этого чанка у нас есть настройка плейсхолдера [[+name]] для значения, которое будет отображаться. Мы можем передать это значение непосредственно в наш блок с помощью следующего кода:
[[$Hello? &name=`Николай`]]
Этот вызов будет выглядеть следующим образом:
Привет Николай!

Кеширование

Любой тег можно вызвать некэшированным, вставив восклицательный знак сразу после открывающей двойной скобки:

[[!snippet]][[!$chunk]][[!+placeholder]][[!*template_var]], и так далее.

Если у вас есть какая-то расширенная настройка, в которой параметр site_url устанавливается для каждого запроса, но ваш [[~[[*id]]]] ссылки не генерируются должным образом, помните, что любой тег можно вызвать некэшированным, включая тег ссылки или якоря: [[!~[[*id]]]]

Тем не менее, вам понадобится только тогда, когда site_url устанавливается динамически, может отличаться для каждого запроса, и вы генерируете полные URL-адреса вместо относительных. Любое нормальное использование может быть кэшировано.

Порядок разбора

Если вы вызовете некэшированный сниппет, он будет выполнен после обработки всех кэшированных тегов.

Если у вас есть кешированные плейсхолдеры ниже этого, они будут оцениваться до того, как будет выполнен этот сниппет — то есть они получат последнее значение, которое было сохранено в кэше ранее этим сниппетом (или пустым, если еще не установлено).

Если вы хотите вызвать Сниппет без кэширования, который устанавливает плейсхолдер, вам необходимо убедиться, что плейсхолдеры также установлены в некешированные:
[[!Profile]]
Привет [[!+username]]

Тайминг

В MODX есть несколько тегов синхронизации:

  • [^qt^] — Время запроса — показывает, сколько времени MODX потратил на общение с базой данных
  • [^q^] — Количество запросов — Показывает, сколько запросов к базе данных выполнено MODX
  • [^p^] — Время разбора — показывает, сколько времени понадобилось MODX для разбора страницы
  • [^t^] — Общее время — показывает общее время, затраченное на анализ / рендеринг страницы.
  • [^s^] — Источник — показывает источник страницы, является ли база данных или кеш
  • [^m^] — Использование памяти — Показывает общий объем памяти, занятый для анализа / рендеринга страницы.

Проверка синтаксиса

Для многих новичков синтаксис тегов может показаться сложным, поэтому вы можете использовать плагин SyntaxChecker для проверки правильности написания тегов.

А лучше использовать редактор Ace, который хорошо подсвечивает синтаксив тегов MODX.

Оцените статью
( Пока оценок нет )
MODX 3
Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.