• Блог
  • ZoomX. Принцип действия

Продолжаю тему внедрения принципов PHP шаблонизаторов в MODX. На этот раз я хочу наглядно показать, как это будет работать. У меня готов карсас будущего компонента. Его задача — заменить шаблонизатор MODX на любой PHP шаблонизатор и тем самым полностью отказаться от специфики MODX (многократный парсинг, элементы в БД). Я считаю, что это делает MODX более понятным для разработчиков из других систем. А значит, более востребованным.

Принцип действия достаточно простой. Я просто заменяю класс modResponse, который отвечает за подготовку ответа, на свой, который вместо парсера MODX запускает указанный PHP шаблонизатор. Из коробки в ZoomX идет поддержка шаблонизатора Smarty. Причина простая — он уже есть в MODX. В дальнейшем можно подключать любые другие шаблонизаторы — Blade, Twig. Да тот же Fenom, только в самостоятельном режиме. Для этого мне нужно продумать моменты универсальности, общие интерфейсы, классы, чтобы шаблонизаторы можно было легко менять. Именно поэтому я пока ещё не выпустил компонент. Но зато на него можно посмотреть ;)

В процессе привыкания к PHP шаблонизаторам происходит трансформация сознания. Вам уже не нужны чанки, вы начинаете использовать отдельные файлы разметки (partials). На смену сниппетам приходят функции или классы. Как я показывал в одном из своих видео, классы наиболее удобны. Если ТВшки не нужны, то и шаблоны MODX выбрасываем. Остаются плагины. Ставим мой Middlewares и теперь переносим всю разработку в редактор. В админке только ставим пакеты и настраиваем права.

Плюсов много. В видео я их озвучил. Для себя я отметил следующие:

  • Повышение скорости подготовки ответа за счёт отказа от многократной обработки контента. Ну и другой принцип тоже даёт прирост скорости. В MODX парсер регулярными выражениями вырезает теги и заменяет их на результат, а PHP шаблонизаторы компилируют шаблон в готовый php файл и при последующих запросах ничего парсить уже не нужно.
  • Функциональность. Благодаря тому, что компилируется PHP файл, возможности шаблонизатора очень сильно возрастают. В MODX шаблонизаторе нельзя расширять шаблоны, делать циклы, определять условия. В нём вообще кроме фильтров ничего по сути нет.
  • Удобство разработки. В том же PhpStorm'е есть поддержка всех популярных шаблонизаторов. Автодополнение значительно упрощает работу и улучшает качество кода. Fenom, к сожалению, в этот список не вошёл.
  • Ну и приобщение к огромному сообществу вэб-разработки за пределами MODX психологически повышает самооценку. ;)

Но есть и минусы. Вернее, я бы сказал, один. Пока нет полноценной поддержки данного подхода. Даже сниппеты pdoTools не умеют работать в режиме PHP шаблонизаторов — им нужно передать кучу шаблонов, чтобы они внутри себя отрендерили контент и выдали готовую строку. Но я думаю, время всё решит. Уверен, найдутся активные разработчики и предложать свою альтернативу.

Дополнительные ссылки

Скрипт из видео для создания ресурсов из редактора.

Страница со 100 чанками на Smarty.

Страница со 100 чанками на Fenom + MODX.

2   2603

Комментарии ()

  1. Sergey Lebedev 25 декабря 2020 # 0
    Сергей, страницы с тестами недоступны. Какие были результаты? Можете поделиться исходниками для тестов, чтобы можно было повторить. Или дать описание тестов.
    1. Сергей Шлоков 25 декабря 2020 # 0
      Простой цикл на 100 итераций {foreach} с вызовом чанка. Разница в скорости была в диапазоне 30-50%. Тест немного искусственный (вывод данных для 100 ресурсов), но автор pdoTools использовал такой же.
    2. Modman 16 сентября 2022 # 0
      Сергей, а получается что шаблон ресурса в админке теперь нужен только для привязки TV?
      1. Сергей Шлоков 17 сентября 2022 # 0
        Так точно.

      Вы должны авторизоваться, чтобы оставлять комментарии.

      Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.