ZoomX 3.0. Полноценный шаблонизатор, файловые элементы и др.
Хорошая новость для тех, кто хочет использовать MODX и быть ближе к современной разработке. Данная версия позволяет полностью перейти на шаблонизатор Smarty как в режиме фреймворка (с использованием роутов и контроллеров), так и в обычном режиме. Т.е. теперь и в обычных шаблонах MODX можно использовать Smarty.
В общем, кто уже пользуется Fenom понимает всю перспективу, которую даёт данная возможность. Но в отличие от последнего, Smarty используется как настоящий PHP шаблонизатор — он изначально рассчитан на работу с файлами, полностью отвечает за парсинг (однократный!), за хранение и применение переменных. Кроме того, теперь его можно использовать в сниппетах pdoTools, в который заложен парсинг чанков только шаблонизатором Fenom или парсером MODX.
Плюс полноценная поддержка файловых элементов, собственный перехватчик исключений, который выводит красивую страницу ошибки.
![](https://modzone.ru/assets/images/articles/309/error_handler.png)
Появилась возможность отключать автоматическую загрузку ресурса по URI для отдельных роутов — т.е. отдельные виртуальные страницы.
В общем, кто уже пользуется Fenom понимает всю перспективу, которую даёт данная возможность. Но в отличие от последнего, Smarty используется как настоящий PHP шаблонизатор — он изначально рассчитан на работу с файлами, полностью отвечает за парсинг (однократный!), за хранение и применение переменных. Кроме того, теперь его можно использовать в сниппетах pdoTools, в который заложен парсинг чанков только шаблонизатором Fenom или парсером MODX.
Плюс полноценная поддержка файловых элементов, собственный перехватчик исключений, который выводит красивую страницу ошибки.
![](https://modzone.ru/assets/images/articles/309/error_handler.png)
Появилась возможность отключать автоматическую загрузку ресурса по URI для отдельных роутов — т.е. отдельные виртуальные страницы.
$router->get('users/{id}/profile', function ($user) {
// Отключаем автозагрузку ресурса
zoomx()->autoloadResource(false); // === $modx->setOption('zoomx_autoload_resource', false);
$user = $modx->getObject('modUser', ['id' => (int)$id])
if (!user) {
abortx(404, 'User not found');
}
return viewx('profile.tpl', ['user' => $user]);
});
Для виртуальных страниц есть автоматический детектор типа контента, который по расширению в URI определяет Content-Type. В противном случае Content-Type будет «text/html». Это дефолтное значение — так как тип определяется ресурсом, а ресурса нет (загрузка отключена). $router->get('sitemap.xml', function () {
// Отключаем автозагрузку ресурса
zoomx()->autoloadResource(false); // === $modx->setOption('zoomx_autoload_resource', false);
$resources = getAllResources(); // получаем список всех ресурсов
return viewx('sitemap.xml', $resources);
});
Ну и ещё ряд доработок и фич. За техническими подробностями прошу сюда.
Поблагодарить автора
Отправить деньги
Комментарии: 18
вот бы нативная поддержка fenom — чтобы была воможность не переписывать все сайты на smarty, а просто обновить пакет! сложно ли это?
А зачем переписывать работающие сайты? Нервы пощекотать? Например, с выходом новой мажорной версии Laravel сайты в большинстве случаев не обновляют. Это для новых проектов.
сложно ли это?Сделать можно всё. Но если честно, у меня нет никакой мотивации этим заниматься.
А twig планируется для поддержки? Чтобы так плавненько перейти на Symfony.
Планирую. Только мысль о других шаблонизаторах не чтобы народ из MODX убегал на другую платформу, познакомившись с разработкой на фреймворках, а и обратное движение. Досталось челу из Symfony или Laravel стека MODX на поддержку, он без проблем с этим справится.
чтобы народ из MODX убегал на другую платформу, познакомившись с разработкой на фреймворках, а и обратное движениеА зачем, Сергей? Ценю и уважаю твой вклад, но кому и зачем в почти 2022 году нужен MODX? Система уже давно превратилась в легаси, безнадёжно устаревшее и бесперспективное. Привлекать кого-то молодого в MODX сейчас это даже просто как-то некрасиво и нечестно.
Назовите для примера хотябы одну систему, в которые вы бы пригласили молодого разработчика, как альтернативу modx.
Без обид, но мне вот это
У каждого своё понятие о красоте и очень много разработчиков с других фреймворков (того же битрикс-а) считают решения modx очень даже красивыми.
Про честность давайте лучше не начинать, это смотря что вы там наобещаете «кому-то молодому», может получиться что честнее приглашать в тильду, а может в jungo, а может и ресторан на свидание ;-)
MODx надежен, неприхотлив и позволяет делать хорошие продукты. Приглашать в него молодых разработчиков, как и предлагать клиентам совершенно не стыдно. А нюансы есть в любых продуктах и инструментах.
То что система не обновляется по 5 раз в месяц я считаю скорее плюсом и следствием стабильности. А компоненты живут отдельно и их экосистема кипит довольно активно. Готовых решений — бесконечное множество, и seo-студии MODx просто обожают, не представляете от какого количества костылей избавляет его использование в сравнении с другими системами.
Печально что складываются мифы и легенды по поводу легаси и устаревания на фоне. Система существует не первый десяток лет и часть кода написана давно, некоторые тренды поменялись с тех пор, но код от этого работать не перестал. Однако поддержка всего современного серверного софта в актуальном modx имеется. Знаете ли, вообще-то и сам PHP уже 15 лет хоронят))
Предлагаю не поддерживать упаднический настрой и выбирать инструмент под задачи. Я вот выбираю MODx под большинство новых сайтов и магазинов, лэндингов, quick start учетных и рекламных систем, серверной части для мессенджер-ботов и мобильных приложений и т.п. потому что удобно и выгодно.
P.S. Спасибо @Сергей Шлоков что реализует свои крутые идеи, чем делает лучше и гибче наш старый добрый клёвый MODx!
некрасиво и нечестнотоже глаза режет
У каждого своё понятие о красоте и очень много разработчиков с других фреймворков (того же битрикс-а) считают решения modx очень даже красивыми.
Про честность давайте лучше не начинать, это смотря что вы там наобещаете «кому-то молодому», может получиться что честнее приглашать в тильду, а может в jungo, а может и ресторан на свидание ;-)
MODx надежен, неприхотлив и позволяет делать хорошие продукты. Приглашать в него молодых разработчиков, как и предлагать клиентам совершенно не стыдно. А нюансы есть в любых продуктах и инструментах.
То что система не обновляется по 5 раз в месяц я считаю скорее плюсом и следствием стабильности. А компоненты живут отдельно и их экосистема кипит довольно активно. Готовых решений — бесконечное множество, и seo-студии MODx просто обожают, не представляете от какого количества костылей избавляет его использование в сравнении с другими системами.
Печально что складываются мифы и легенды по поводу легаси и устаревания на фоне. Система существует не первый десяток лет и часть кода написана давно, некоторые тренды поменялись с тех пор, но код от этого работать не перестал. Однако поддержка всего современного серверного софта в актуальном modx имеется. Знаете ли, вообще-то и сам PHP уже 15 лет хоронят))
Предлагаю не поддерживать упаднический настрой и выбирать инструмент под задачи. Я вот выбираю MODx под большинство новых сайтов и магазинов, лэндингов, quick start учетных и рекламных систем, серверной части для мессенджер-ботов и мобильных приложений и т.п. потому что удобно и выгодно.
P.S. Спасибо @Сергей Шлоков что реализует свои крутые идеи, чем делает лучше и гибче наш старый добрый клёвый MODx!
нука расскажи куда приглашать надо? БРЕД!
modx топчик почти для любых проектов
modx топчик почти для любых проектов
А чем MODX хуже Вордпресса, Джумлы, Битрикса и др.? CMS востребованы. У них своя ниша. И ниша немаленькая. А пилить сайты на фреймворках удовольствие сомнительное.
Да, мы (те, кто занимаются поддержкой и развитием MODX), иногда бубним про устаревший код в ядре. Но разработчик сайта в первую очередь думает не над тем, как править ядро или админку, а над тем, как быстро и хорошо сделать сайт. И MODX позволяет делать это гораздо удобнее, чем многие другие CMS.
В чём нечестность привлечения молодого разработчика? Я правильно понимаю, что этот начинающий веб разработчик должен пилить сайты на фреймворках с микросервисной архитектурой и деплоем с CI? Очень странное соображение. Новички вообще в ядро не лезут. В этом и смысл CMS. А тот, кто выбрал MODX для высоконагруженного сервиса, должен не на него плеваться, а на зеркало.
П.С. Ко мне как-то за помощью обращался человек из студии, разрабатывающей сайт для одного министерства одной области. На ларавел. Так вот я вообще был в шоке — он практически ничего не знал о вэб разработке. Видимо какой-то студент или родственник министра. Но его заставили делать сложные задачи. Посоветовал ему заняться самообучением. Ибо весь смысл его обращения был — сделай как мне нужно. Представляю, какой сайт получился.
Да, мы (те, кто занимаются поддержкой и развитием MODX), иногда бубним про устаревший код в ядре. Но разработчик сайта в первую очередь думает не над тем, как править ядро или админку, а над тем, как быстро и хорошо сделать сайт. И MODX позволяет делать это гораздо удобнее, чем многие другие CMS.
В чём нечестность привлечения молодого разработчика? Я правильно понимаю, что этот начинающий веб разработчик должен пилить сайты на фреймворках с микросервисной архитектурой и деплоем с CI? Очень странное соображение. Новички вообще в ядро не лезут. В этом и смысл CMS. А тот, кто выбрал MODX для высоконагруженного сервиса, должен не на него плеваться, а на зеркало.
П.С. Ко мне как-то за помощью обращался человек из студии, разрабатывающей сайт для одного министерства одной области. На ларавел. Так вот я вообще был в шоке — он практически ничего не знал о вэб разработке. Видимо какой-то студент или родственник министра. Но его заставили делать сложные задачи. Посоветовал ему заняться самообучением. Ибо весь смысл его обращения был — сделай как мне нужно. Представляю, какой сайт получился.
А здесь по прежнему не приветствуется инакомыслие :)
А действительно, какие есть альтернативы у MODX? Да конечно же никаких! Я в СберТехе в прошлом году работал, там тоже MODX использовали. Прикиньте?! А не, шучу же я :) Конечно там не используют MODX.
Очень радует аргумент каждого: «А кто, если не MODX? На чем нам еще сайты делать?». А вам шашечки или ехать? Вы для себя сайты делаете, или чтобы денег заработать? Открою тайну: если денег заработать, то поверьте, на MODX свет клином не сошелся. Компании платят сильно больше за другие технологии.
И про топчик и актуальность еще: Smarty в MODX? Не, никогда такого не было. Или было? Мой репозиторий с открытым кодом еще с 2015 г. болтается github.com/MODX-Club/modxSmarty и с его использованием не один сайт был сделан и до сих пор работают. 2021 г. Новинка! Smarty в MODX! И хотя видно, что Сергей не мало своего функционала накидал, все же это ходьба по кругу.
UPD: Аа, забыл сказать.
То еще адище… Попробуйте найти что именно за ошибка и где она возникает. В лучшем случае доберетесь до скомпилированного шаблона (там в середине списка смотрите), но это не исходный файл, это куча сгенеренного php-кода, в котором вы с трудом найдете взаимосвязь со своими исходными шаблонами. Ошибки в смарти — это всегда была головная боль.
Назовите для примера хотябы одну систему, в которые вы бы пригласили молодого разработчика, как альтернативу modx.
нука расскажи куда приглашать надо? БРЕД!Вспоминается поговорка: «Пока ты стоишь лицом к своему прошлому, ты стоишь спиной к своему будущему!»
modx топчик почти для любых проектов
А действительно, какие есть альтернативы у MODX? Да конечно же никаких! Я в СберТехе в прошлом году работал, там тоже MODX использовали. Прикиньте?! А не, шучу же я :) Конечно там не используют MODX.
Очень радует аргумент каждого: «А кто, если не MODX? На чем нам еще сайты делать?». А вам шашечки или ехать? Вы для себя сайты делаете, или чтобы денег заработать? Открою тайну: если денег заработать, то поверьте, на MODX свет клином не сошелся. Компании платят сильно больше за другие технологии.
И про топчик и актуальность еще: Smarty в MODX? Не, никогда такого не было. Или было? Мой репозиторий с открытым кодом еще с 2015 г. болтается github.com/MODX-Club/modxSmarty и с его использованием не один сайт был сделан и до сих пор работают. 2021 г. Новинка! Smarty в MODX! И хотя видно, что Сергей не мало своего функционала накидал, все же это ходьба по кругу.
UPD: Аа, забыл сказать.
собственный перехватчик исключений, который выводит красивую страницу ошибки..
То еще адище… Попробуйте найти что именно за ошибка и где она возникает. В лучшем случае доберетесь до скомпилированного шаблона (там в середине списка смотрите), но это не исходный файл, это куча сгенеренного php-кода, в котором вы с трудом найдете взаимосвязь со своими исходными шаблонами. Ошибки в смарти — это всегда была головная боль.
А здесь по прежнему не приветствуется инакомыслие :)Здоровая критика приветствуется. И мы частенько поливаем негодованием MODX. А наброс на вентилятор позитивного эффекта не вызывает. Обычный холивар.
Вспоминается поговорка: «Пока ты стоишь лицом к своему прошлому, ты стоишь спиной к своему будущему!»Точно. Купил машину — велосипед на помойку. Он — прошлое. Ведь только люди без фантазии используют каждый инструмент по своему назначению. По парку можно и на машине прокатиться.
Вот ты же никакими CMS не пользуешься и даже свою не разрабатывал. Любой сайт с нуля. Ага. Ну для чего этот пафос? Течение IT технологий каждого выносит на разные берега. MODX позволяет стартовать, оттолкнуться. Фрилансеры сами решают каким инструментом им удобнее пользоваться. А наёмные используют стек компании. К чему эти споры?
И про топчик и актуальность еще: Smarty в MODX? Не, никогда такого не было. Или было?Я первым делом смотрел твой репозиторий. Но там логика такая же как и в pdoTools — рулит всем шаблонизатор MODX. Я пошёл другой дорогой — разработка фронта полностью вынесена из MODX — роуты, контроллеры, полноценная однократная PHP шаблонизация без многоразовой компиляции страницы в PHP код на каждом этапе парсера MODX.
Твоё решение мне нравится. Для того времени очень даже. Но ты не смог сообществу разъяснить его достоинства. А я в том момент не смог его оценить по причине невысокого уровня знаний.
Вообще, когда читаешь наискосок есть минус — сути не ухватываешь. Smarty я использую только потому, что он уже есть в ядре. Вот и вся тайна. Есть планы и остальные шаблонизаторы добавить.
Та же проблема «наискосок» и с перехватчиком. Он перехватывает не ошибки Smarty, а все. Можно в роутах, в классах выкинуть исключение — и получить красивую страницу ошибки. А если это PHP ошибка, то и трассировку. Как это делает XDebug. Как это делают разработчики фреймворков.
И ещё, я на твоём месте не стал бы переживать насчёт топика. Кроме лайков ничего не будет. Много было разговоров о том, что нужно добавить в MODX что-то из современной разработки, нужен механизм REST API. Сделал. И никому это особо и не нужно. Ровно такая же тема с MODX3. Все соревнуются в остроумии по поводу его выхода. Но на самом деле, даже если он выйдет, никому он будет не нужен.
Закончу тоже народной мудростью «Все мечтают о бессмертии, но не знают чем себя занять в холодный дождливый вечер.»
Вообще, когда читаешь наискосок есть минус — сути не ухватываешь.Пойми меня правильно: я не говорю, что твое решение плохое. И я не только прочитал твой топик, но и на сайт твой сходил (хотя там не целиком прочитал), и в гит-репозиторий заглянул что там и как. И вот как раз от уведенного в гите мнение неоднозначное. То есть ты добавляешь роутер, контроллеры и т.п., в этом же роутере рулишь УРЛы и далее логику реализовываешь… А что дальше? Еще один шаг ведь, и это Ларка (а там все прелести с полноценной гит-версификацией и прочие радости). Вопрос: а зачем вот тут тогда MODX? Просто потому что API известно? Просто потому что знаешь куда что прописать? И вот потому что админка есть? Или потому что типа есть много компонентов на все случаи жизни? Ну серьезно. Можешь в двух словах объяснить весомую причину? Просто очевидно же, что ты еще чуть-чуть и сам перепрыгнешь дальше. Но цепляешься за якоря. Тут скорее всего дело не в том, что MODX лучший, а в том, что ты сам просто не хочешь идти дальше. То есть особо большего тебе и не надо, а здесь у тебя глубокие познания. Такое тоже имеет место быть и за такое осуждать никак нельзя. Но и нельзя использовать свои знания и авторитет для того, чтобы убеждать менее продвинутых в том, что альтернативы у них нет и что они нашли себе платформу на всю жизнь. Это все напоминает 2009-2010 года, когда Эволюционисты по всю убеждали новичков, что Рево — вообще нафиг не нужная штука. Я доказывал обратное, что место имеет место быть и одна и другая платформа, и расписывал плюсы-минусы и той и другой (в отличие от многих у меня были знания в обеих платформах, в то время, как Эволюционисты знали только одну и ненавидели другую). И что в итоге? В итоге Реву все таки оценили и появились свои последователи. А сейчас крики, что Рева — последний оплот технологий. Ну-ну.
Вот ты же никакими CMS не пользуешься и даже свою не разрабатывал. Любой сайт с нуля. Ага.Еще раз: вам шашечки или ехать? Не всегда сайт надо делать с нуля. И да, не всегда для этого нужна готовая CMS. Сейчас часто берут просто некую заготовку (boilerplate) и поверх нее уже свой функционал накидывают. К слову, и у меня такая есть: github.com/prisma-cms/nextjs-nexus
Но моего кода там мало. В основном это компоновка готовых сторонних решений (next-js, prisma-2, graphql и т.п.). И сейчас это нормальная практика. Сейчас вообще самостоятельно мало что пишется от и до, используются сторонние популярные решения, собираемые во едино и допиливаемые.
И я не только прочитал твой топик, но и на сайт твой сходилКак же ты читаешь, если после пишешь такое?
Но и нельзя использовать свои знания и авторитет для того, чтобы убеждать менее продвинутых в том, что альтернативы у них нет и что они нашли себе платформу на всю жизнь.Ведь я как раз и пишу и делаю всё для того, чтобы можно было из MODX плавно перемещаться в стек фреймворков для решения более сложных задач без каких-либо накладных расходов на адаптацию. Чтобы пользователи MODX знакомились с техникой работы старших братьев.
Можешь в двух словах объяснить весомую причину?В тысячный раз… Я занимаюсь программированием ради удовольствия. И мне нравится то, что я делаю. Я поучаствовал в паре проектов на Laravel, активно тусовался в их сообществе. Оттуда кстати и позвали в проекты. Но там другая атмосфера. В основном всё сводится к знаниям различных пакетов. Очень много рутинной работы и мало творчества. Да, там другие расценки. Но я на зарплате не сижу. И участвовал ради интереса.
А в нашем сообществе совершенно другая аура. Я к нему привык. И я прекрасно понимаю потолок MODX и нигде не говорил, что ему нет альтернативы. Но пока есть интерес его развивать — буду развивать. Что в этом плохого не понимаю.
Да, справедливости ради я признаю, что ты не имеешь жесткой позиции. Если читать внимательно твои слова, то ты довольно прямо говоришь: для простых сайтов MODX сгодится, для чего посложнее ищите что-то другое. Но, как видно, это не до всех доходит. Многие, видимо, воспринимают это как без вариантов. И когда чел выразил свое мнение, что молодых привлекать как-то некрасиво, ему минусов насовали. А ведь он в своем смысле очень даже прав. Пусть цифры за себя говорят. Давайте посмотрим на hh количество вакансий по MODX (вообще по всему рунету и по всем сферам): hh.ru/search/vacancy?text=modx
174 вакансии на сегодня… Не густо.
Для сравнения React hh.ru/search/vacancy?text=React 7375
Наверняка ни для кого не секрет, что тех же лет 5 назад по реакту вакансий практически не было. Потому чел и говорит про почти 22 год. Это не маловажный момент.
Вот тебе для души, кому-то тоже, а какой-то молодой специалист карьеру себе планирует, учится. И вот кто-то ему говорит «Посмотри по сторонам, есть альтернативы», а ему минусов))) Короче, ничего не меняется.
174 вакансии на сегодня… Не густо.
Для сравнения React hh.ru/search/vacancy?text=React 7375
Наверняка ни для кого не секрет, что тех же лет 5 назад по реакту вакансий практически не было. Потому чел и говорит про почти 22 год. Это не маловажный момент.
Вот тебе для души, кому-то тоже, а какой-то молодой специалист карьеру себе планирует, учится. И вот кто-то ему говорит «Посмотри по сторонам, есть альтернативы», а ему минусов))) Короче, ничего не меняется.
Вопрос: а зачем вот тут тогда MODX?Готовая архитектура.
Просто потому что API известно?Да.
Просто потому что знаешь куда что прописать?Да.
И вот потому что админка есть?Да. Её не нужно самому писать.
Или потому что типа есть много компонентов на все случаи жизни?Да. Готовые компоненты с UI в отличие от тех же пакетов Composer, которые используются в той же Ларе, где нужно в большинстве случаев писать интерфейсы, так как архитектура у всех сайтов разная.
Я предполагал эти ответы, потому их и задал. Не удивлен. Лишний раз ты подтвердил: ты занимаешься для себя, для души. Но не все пойдут этим путем, а значит и не всем одни и те же инструменты выбирать.
А можете Сергей, пожалуйста, рассказать чуть подробнее, какие преимущества даст переход с Fenom на Smarty?
Сейчас планирую делать новый проект, и вот задумался может попробовать использовать этот компонент.
Я внимательно прочитал заметку и в общем понимаю какие плюсы, но интересно именно на практике какие доп. возможности это добавляет или может упрощает реализацию каких-то моментов? Может это значительно ускоряет работу сайта? Или может что-то можно сделать такое, что Fenom не позволяет?
Сейчас планирую делать новый проект, и вот задумался может попробовать использовать этот компонент.
Я внимательно прочитал заметку и в общем понимаю какие плюсы, но интересно именно на практике какие доп. возможности это добавляет или может упрощает реализацию каких-то моментов? Может это значительно ускоряет работу сайта? Или может что-то можно сделать такое, что Fenom не позволяет?
Вот тут бегло пробежался по отличиям шаблонизаторов.
А по скорости вот тест, сделанный по инструкции в документации, для 800 ресурсов.
![](https://file.modx.pro/files/a/3/3/a33d141a166f3cc7940ce4dc3e9713e9s.jpg)
---------------------------------------------------------------------------------
![](https://file.modx.pro/files/e/8/1/e81b20e05693e8830aacbf775df08667s.jpg)
По скорости Smarty чуть быстрее, но памяти отнимает чуть больше.
какие преимущества даст переход с Fenom на Smarty?Цель ZoomX не шаблонизаторы менять, а подход к программированию. Smarty был выбран только потому, что он уже есть в ядре MODX. А вот кодить с ZoomX можно так, как это делают старшие браться из сообщества фреймворков со всеми вытекающими преимуществами современной разработки.
А по скорости вот тест, сделанный по инструкции в документации, для 800 ресурсов.
![](https://file.modx.pro/files/a/3/3/a33d141a166f3cc7940ce4dc3e9713e9s.jpg)
---------------------------------------------------------------------------------
![](https://file.modx.pro/files/e/8/1/e81b20e05693e8830aacbf775df08667s.jpg)
По скорости Smarty чуть быстрее, но памяти отнимает чуть больше.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.