Оглавление

Теги — это основные рабочие элементы MODx для пользователя сайта.

Указывая теги на странице, вы можете вызвать какой-то кусок HTML или PHP кода, текст из словаря, или переменные документа.

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

Теги в MODx

В MODx присутствует удобный массив тегов, различаемых токеном или набором токенов.

Для элементов и полей

Элемент Токен Пример Использование
Поля ресурсов * [[*pagetitle]] Выводит значение поля текущего ресурса.
Дополнительные поля (TV) * [[*tvName]] Выводит значение дополнительного поля ресурса.
Чанки $ [[$header]] Определяет статический фрагмент кода.
Сниппеты [[snippetName]] Определяет выполняемый сниппет с PHP кодом.

Для вывода контента

Элемент Токен Пример Использование
Плейсхолдеры + [[+modx.user.id]] Определяет плейсхолдер для вывода результатов значений.
Ссылки ~ [[~link]] Возвращает ссылку.
Системные настройки ++ [[++site_start]] Выводит значение системной настройки, в качестве имени настройки используется её ключ.
Лексиконы/словари % [[%language]] Выводит значение лексиона по его имени. Текущий язык определяется в системной настройке cultureKey.
Комментарии - [[- Это комментарий]] Определяет неразобранный комментарий. Этот комментарий не будет отображен во фронтенде.

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

Для системных значений парсера MODx

Описание тег
Выводит время потраченное на запросы к базе данных. [^qt^]
Выводит количество запросов к базе данных. [^q^]
Выводит время потраченное на работу PHP скриптов. [^p^]
Выводит общее время потраченное на генерацию страницы. [^t^]
Выводит источник содержимого (база данных или кэш). [^s^]

Разбор тега MODx

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

Тип Использование
[[ Определяет открытие тега MODx.
! Необязательный флаг, указывает что тег вызван некэшируемым.
Token Необязательный флаг. Определяет тип элемента.
  • $ = Чанк.
  • * = Поле ресурса / дополнительное поле ресурса.
  • + = Плейсхолдер.

Смотрите выше для большего количества вариантов токенов.

Name Имя значения запрашиваемого элемента.
@propertyset Определяет набор свойств.
:modifier=`value` Определяет выходной фильтр или модификатор, который будет использоваться.
Например: :gt=`0`:then=`Now available!`
? Указывает MODx, что в вызове содержаться параметры.
&property=`value` Определяет параметр и его значение, которое будет использоваться в вызове. Каждый набор свойств разделен амперсандом (&).
Например: &prop1=`1` &prop2=`2`
]] Определяет закрытие тега MODx.

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

Эти теги могут прописываться в одну линию или располагаться на нескольких строках для удобства. Оба варианта однозначны:

[[!getResources? &parents=`123` &limit=`5`]]

[[!getResources?
    &parents=`123`
    &limit=`5`
]]

Параметры тегов

Все теги (а не только сниппеты) могут иметь параметры. Например, у нас есть чанк Hello:

Привет, [[+name]]!

В чанке есть плейсхолдер. Мы хотим задать значение для этого плейсхолдера. Раньше нужно было использовать сниппет, который установит это значение. Но не теперь. Просто укажите нужное значение в параметрах чанка:

[[$Hello? &name=`Сергей`]]

На выходе мы получим:

Привет, Сергей!

Кэширование

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

[[!snippet]]
[[!$chunk]]
[[!+placeholder]]
[[!*template_var]]