Привет, друзья! Хорошая новость для модыксеров — компонент, о котором мы много говорили в сообществе, вышел. Возможно не все в курсе о чём речь. Давайте я расскажу поподробнее.

Что такое ZoomX


Задача, которую позволяет решать данный компонент — максимально полный отказ от встроенного шаблонизатора MODX. Таким образом, мы выбрасываем многократный парсинг контента, элементы, хранящиеся в БД, плейсхолдеры с точками и плюсами и добавляем любой современный быстрый мощный PHP шаблонизатор. Стандартные шаблоны из БД теперь используются только для привязки TV-шек к ресурсам.

Из коробки сразу доступен Smarty, так как он уже присутствует в ядре. Плюс, через заложенные в систему возможности расширения, заменены класс обработки запроса и класс подготовки ответа. Не надо ни взбалтывать, ни перемешивать, как в случае с Fenom. После установки компонента можно не заходя в админку создавать шаблоны в удобном IDE редакторе. Дальше останется только их привязать к ресурсам. А для этого используется FastRoute Никиты Попова.

Роутер


Для MODX Revolution есть несколько компонентов, позволяющих управлять роутингом. Но все они срабатывают на событие OnPageNotFound, т.е. когда MODX не нашёл документа по указанному URI. В ZoomX роутинг срабатывает перед встроенным поиском документа. И результат зависит от режима:

  • Отключен. Все указанные роуты игнорируются. MODX работает в обычном режиме.
  • Совместный (мягкий). Если для указанного URI роут не найден, то MODX продолжит обработку запроса в обычном режиме.
  • Строгий. Если для указанного URI роут не найден, то обработка запроса будет завершена с ошибкой 404.

Таким образом, вы можете работать или в привычном режиме, или использовать PHP шаблонизатор только для указанных ресурсов, или полностью отдать управление PHP шаблонизатору. It's up to you.

При использовании PHP шаблонизатора (на первом этапе это Smarty) также будет доступен и стандартный синтаксис MODX. Для этого есть специальный тег parse:

{parse}
[[!snippet?foo=`bar`]]
{/parse}
// Или так
{'[[!snippet?foo=`bar`]]'|parse:'modParser'}

Также ZoomX добавляет дополнительные плагины Smarty для работы с MODX.

Если коротко, то это всё. Подробнее можно прочитать в документации. В ближайших планах пополнить список доступных шаблонизаторов шаблонизатором Blade.

Проект на GitHub.