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.
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()