Термины и базовые понятия в CMS/CMF MODX Revolution

Ресурс

Базовые типы ресурсов в Revolution: документ, статический ресурс, символическая ссылка, ссылка.Также в Revolution можно создавать свои собственные типы ресурсов. Каждый ресурс в MODX имеет свой уникальный id.

Шаблон

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

Ресурсы, которые имеют тип документ всегда привязаны к одному из существующих шаблонов.

MODX не требует каких-либо специально сформированных наборов файлов для создания шаблонов. Шаблоном может являться любой HTML, XML, javascript код, текст или даже пустая строка.

Чанк

Чанк - простейшая MODX сущность. Это просто часть шаблона (или весь шаблон), которая для удобства работы или еще по каким-либо соображениям, «вырезана» и сохранена с собственным именем.

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

В шаблоне веб-документа подставить содержимое чанка можно, указав специальную конструкцию:

Код
[[$название_чанка]]

TV

TV (template variable)ТВ или дополнительное поле обозначается значком телевизора в админ-панели Revolution.

Суть TV заключается в следующем. Код в шаблоне вывода не меняется, он всегда одинаковый для любого документа (ресурса), которому присвоен данный шаблон. Для тех блоков на странице, которые создаются «на лету» применяются либо сниппеты, либо TV. Т.е. TV - это небольшой элемент страницы, который не является постоянным для разных документов, имеющих один шаблон.

Простейший пример использования TV - дата создания записи в блоге. Каждая запись в блоге выводится по одному и тому же шаблону, но строка с датой у каждой записи будет своя.

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

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

Чтобы вывести значения TV в шаблоне используются следующие конструкции:

Код
[[*название TV]]

Сниппет

Самая мощная сущность в MODX. Именно наличие сниппетов позволяет создавать очень сложные сайты, вообще не зная PHP.

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

Чтобы можно было управлять действиями сниппета, не внося изменения в код (!), каждый сниппет вызывается в MODX с набором параметров. В зависимости от значений этих параметров сниппет может менять свое поведение в широких пределах.

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

Конструкции для вызова сниппета на странице выглядят одинаково в обоих ветках:

Код
[[название_сниппета]] - вызов без параметров [[название_сниппета? &param1=`знач1` &paramN=`значN`]] - вызов с параметрами

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

Некешируемые вызовы сниппетов выглядят так:

Код
[[!название_сниппета]]

Если задача сниппета - вывести какой-то текст или часть HTML страницы, то одним из параметров, как правило, является чанк с шаблоном вывода сниппета. При этом само содержимое чанка в итоге может и не появиться на странице - все зависит от логики выполнения сниппета.

Плагин

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

Примерами событий могут быть инициализация парсера MODX, сохранение формы редактирования ресурса в админке, событие «страница не найдена».

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

Компонент

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

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

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

Синтаксис плейсхолдеров

Код
[[+название]]

Стандартные поля документа

Для стандартных полей документа в шаблоне используется тот же синтаксис, что и для вывода значений TV.

Синтаксис:

Код
[[*название]]

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

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

Код
[[++system_setting]]

Отладочные теги

Используются для вывода времени выполнения скриптов или количества запросов.

Синтаксис:

Код
[^q^] - кол-во запросов в БД [^t^] - время генерации страницы

Языковые константы

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

Синтаксис:

Код
[[%ключ (название) языковой константы]]

Комментарии MODX

Синтаксис :

Код
[[-текст]]

Комментарии появились в Revo и позволяют временно «отключать» сниппеты, чанки или TV, не удаляя их вызов из кода. Парсер MODX пропускает такие конструкции, не обрабаытывая их.

2424