[ZoomX] Меняем правила шаблонизации в MODX Revolution

Друзья, хочу рассказать о новом, возможно, революционном компоненте Сергея Шлокова ZoomX. С его разрешения, разумеется, я хочу перенести в сообщество его статью из Хабра.



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

Что такое 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.

</Конец статьи>

Лично для меня это очень хорошие новости. Не знаю что там с парсером, посмотреть еще не удалось, но Роутинг это больная тема для MODX. В том числе и для построения нормального RESTfull API

В ближайшее время попробую пощупать ZoomX и расскажу о впечатлениях и практическом опыте в плате работы с роутингом.

Друзья, хочу напомнить, а может и рассказать кому-то, что в сети есть очень полезный блог про MODX — modZone.ru и там периодически появляются полезные статьи и обзоры. Добавляйте в закладки.

Также modZone.ru завел телеграм-канал — присоединяйтесь

Это не реклама. Мое личное мнение — там объективно полезная информация по MODX, которой не найти здесь.
Николай Савин
12 ноября 2020, 19:09
modx.pro
3
1 826
+16
Поблагодарить автора Отправить деньги

Комментарии: 15

Павел Голубев
14 ноября 2020, 12:25
-1
Для rest урлов можно решить вопрос на уровне location в nginx. 1 правило и никаких плагинов не надо.
    Николай Савин
    15 ноября 2020, 11:32
    0
    Действительно и зачем все так напрягаются с роутингом, все ж одной строкой решается.
    Но было бы намного интереснее подгрузить на каждый роут свой контроллер, с заранее определенными правами и набором возможностей, не считаешь?
Александр Наумов
14 ноября 2020, 21:49
+2
Спасибо за новость, буду ковырять.
    Николай Савин
    15 ноября 2020, 11:31
    +9
    Я со своей стороны тоже попробую сделать и написать практический обзор, чтобы более подробно рассказать о потенциальной пользе компонента.
    Роман
    18 ноября 2020, 10:08
    0
    Читал эту статью, тема заинтересовала. Нужно пробовать на реальных проектах. Смотреть плюсы и минусы(они тоже могут возникнуть).
      Sergey (Sentinel)
      19 ноября 2020, 11:01
      0
      К fenom привыкли, если разницы по синтаксису нет почти, а по скорости лучше, то будем использовать. Круто, спасибо!
        Николай Савин
        19 ноября 2020, 11:03
        0
        Ну кто то больше к blade привык. Ведь Laravel по популярнее будет
          Sergey (Sentinel)
          19 ноября 2020, 11:06
          0
          это да… я не хотел за рамки MODX выходить… :)))
        Sergey (Sentinel)
        24 января 2021, 22:35
        0
        Кто-то уже использовал? Поделитесь опытом… :))
          Сергей
          13 ноября 2021, 23:20
          0
          Подробнее можно прочитать в документации. В ближайших планах
          Ссылку поправьте…
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            15