Для упрощения разбора логики, улучшения производительности и избежать путаницы с множеством новых тегов, все теги теперь одного формата, дифференцированного маркера или набора маркеров, которые появляются перед строкой, которая идентифицирует содержимое элемента или содержимого тега, который должен быть обработан, например [ [tokenIdentifier] ].

Теги MODx

Элемент

Тег

Пример

Шаблон

Нет тега

 

Поле ресурса

[ [*field] ]

[ [*pagetitle] ]

TV

[ [*tv] ]

[ [*photo] ]

Чанки

[ [$chunk] ]

[ [$menuTpl] ]

Сниппет

[ [snippet] ]

[ [wayfinder] ]

Плагины

Нет тега

 

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

[ [+placeholder] ]

[ [+pagetitle] ]

Ссылка

[ [~link] ]

[ [~[ [*id] ] ] ]

Системные настройки

[ [++system_setting] ]

[ [++base_url] ]

Язык

[ [%language_string_key] ]

[ [%LanguageStringKey? &language=`en` &namespace=`NameSpaceName` &topic=`TopicName`] ]

Комментарий

[ [-comment] ]

 

Принятие этого упрощенного формата позволяет новому парсеру быть полностью рекурсивным.

Структура тега

[ [ (открывающиеся скобки)
! (опционально, флаг некешированного тега)
elementToken(опционально если это сниппет, $=чанк, *=поле ресурса/tv, +=плейсхолдер, т.д.)
elementName
@propertyset(опционально, пространсво имен)
:filterName=`modifier`:... (опционально, один или более модификаторов ввода/вывода)
? (обязательно, если содержит параметры; опционально в ином случае)
&propertyName=`propertyValue` &... (опционально; свойства разделённые амперсантом &)
] ] (закрывающиеся скобки)

Соберем все вместе:

[ [MySnippet@myPropSet:filter1:filter2=`modifier`? &prop1=`x` &prop2=`y`] ]

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

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

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

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

Все теги MODX Revo могут принимать свойства. Например, предположим, что у нас был чанк под названием ‘Hello’ с содержанием:

Hello [ [+name] ]!

Вы заметите, новый синтаксис - плейсхолдер. Так, мы будем писать, чтобы разобрать параметры, которые переданы в чанк. Вы можете просто передать свойство для чанка:

[ [$Hello?name=`George`] ]

И на выходе получите:

Hello George!

 

Кеширование

В Revo, любой тег можно назвать некэшированным, вставив восклицательный знак сразу после двойных скобок: [ [!snippet] ], [ [!$chunk] ], [ [!+placeholder] ], [ [*tv] ] и т.д.

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

[ [!~[ [*id] ] ] ]

Теги времени

  • [ ^qt^ ] – Время запроса – показывает время запросов к БД
  • [ ^q^ ] – Количество запросов –показывает количество запросов к БД
  • [ ^p^ ] – Время парсинга – показывает время парсинга документа
  • [ ^t^ ] – Общее время – показывает время загрузки документа
  • [ ^s^ ] - источник – показывает какой источник БД или кеш.
Обращаю ваше внимание на то, что нужно удалить пробелы между символами [ и [, ] и ], [ и ^, ^ и ]