ZoomX 3.0. Полноценный шаблонизатор, файловые элементы и др.
Хорошая новость для тех, кто хочет использовать MODX и быть ближе к современной разработке. Данная версия позволяет полностью перейти на шаблонизатор Smarty как в режиме фреймворка (с использованием роутов и контроллеров), так и в обычном режиме. Т.е. теперь и в обычных шаблонах MODX можно использовать Smarty.
В общем, кто уже пользуется Fenom понимает всю перспективу, которую даёт данная возможность. Но в отличие от последнего, Smarty используется как настоящий PHP шаблонизатор — он изначально рассчитан на работу с файлами, полностью отвечает за парсинг (однократный!), за хранение и применение переменных. Кроме того, теперь его можно использовать в сниппетах pdoTools, в который заложен парсинг чанков только шаблонизатором Fenom или парсером MODX.
Плюс полноценная поддержка файловых элементов, собственный перехватчик исключений, который выводит красивую страницу ошибки.

Появилась возможность отключать автоматическую загрузку ресурса по URI для отдельных роутов — т.е. отдельные виртуальные страницы.
В общем, кто уже пользуется Fenom понимает всю перспективу, которую даёт данная возможность. Но в отличие от последнего, Smarty используется как настоящий PHP шаблонизатор — он изначально рассчитан на работу с файлами, полностью отвечает за парсинг (однократный!), за хранение и применение переменных. Кроме того, теперь его можно использовать в сниппетах pdoTools, в который заложен парсинг чанков только шаблонизатором Fenom или парсером MODX.
Плюс полноценная поддержка файловых элементов, собственный перехватчик исключений, который выводит красивую страницу ошибки.

Появилась возможность отключать автоматическую загрузку ресурса по 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
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Сделать можно всё. Но если честно, у меня нет никакой мотивации этим заниматься.
тоже глаза режет
У каждого своё понятие о красоте и очень много разработчиков с других фреймворков (того же битрикс-а) считают решения modx очень даже красивыми.
Про честность давайте лучше не начинать, это смотря что вы там наобещаете «кому-то молодому», может получиться что честнее приглашать в тильду, а может в jungo, а может и ресторан на свидание ;-)
MODx надежен, неприхотлив и позволяет делать хорошие продукты. Приглашать в него молодых разработчиков, как и предлагать клиентам совершенно не стыдно. А нюансы есть в любых продуктах и инструментах.
То что система не обновляется по 5 раз в месяц я считаю скорее плюсом и следствием стабильности. А компоненты живут отдельно и их экосистема кипит довольно активно. Готовых решений — бесконечное множество, и seo-студии MODx просто обожают, не представляете от какого количества костылей избавляет его использование в сравнении с другими системами.
Печально что складываются мифы и легенды по поводу легаси и устаревания на фоне. Система существует не первый десяток лет и часть кода написана давно, некоторые тренды поменялись с тех пор, но код от этого работать не перестал. Однако поддержка всего современного серверного софта в актуальном modx имеется. Знаете ли, вообще-то и сам PHP уже 15 лет хоронят))
Предлагаю не поддерживать упаднический настрой и выбирать инструмент под задачи. Я вот выбираю MODx под большинство новых сайтов и магазинов, лэндингов, quick start учетных и рекламных систем, серверной части для мессенджер-ботов и мобильных приложений и т.п. потому что удобно и выгодно.
P.S. Спасибо @Сергей Шлоков что реализует свои крутые идеи, чем делает лучше и гибче наш старый добрый клёвый MODx!
modx топчик почти для любых проектов
Да, мы (те, кто занимаются поддержкой и развитием MODX), иногда бубним про устаревший код в ядре. Но разработчик сайта в первую очередь думает не над тем, как править ядро или админку, а над тем, как быстро и хорошо сделать сайт. И MODX позволяет делать это гораздо удобнее, чем многие другие CMS.
В чём нечестность привлечения молодого разработчика? Я правильно понимаю, что этот начинающий веб разработчик должен пилить сайты на фреймворках с микросервисной архитектурой и деплоем с CI? Очень странное соображение. Новички вообще в ядро не лезут. В этом и смысл CMS. А тот, кто выбрал MODX для высоконагруженного сервиса, должен не на него плеваться, а на зеркало.
П.С. Ко мне как-то за помощью обращался человек из студии, разрабатывающей сайт для одного министерства одной области. На ларавел. Так вот я вообще был в шоке — он практически ничего не знал о вэб разработке. Видимо какой-то студент или родственник министра. Но его заставили делать сложные задачи. Посоветовал ему заняться самообучением. Ибо весь смысл его обращения был — сделай как мне нужно. Представляю, какой сайт получился.
Fi1osofВспоминается поговорка: «Пока ты стоишь лицом к своему прошлому, ты стоишь спиной к своему будущему!»
А действительно, какие есть альтернативы у MODX? Да конечно же никаких! Я в СберТехе в прошлом году работал, там тоже MODX использовали. Прикиньте?! А не, шучу же я :) Конечно там не используют MODX.
Очень радует аргумент каждого: «А кто, если не MODX? На чем нам еще сайты делать?». А вам шашечки или ехать? Вы для себя сайты делаете, или чтобы денег заработать? Открою тайну: если денег заработать, то поверьте, на MODX свет клином не сошелся. Компании платят сильно больше за другие технологии.
И про топчик и актуальность еще: Smarty в MODX? Не, никогда такого не было. Или было? Мой репозиторий с открытым кодом еще с 2015 г. болтается github.com/MODX-Club/modxSmarty и с его использованием не один сайт был сделан и до сих пор работают. 2021 г. Новинка! Smarty в MODX! И хотя видно, что Сергей не мало своего функционала накидал, все же это ходьба по кругу.
UPD: Аа, забыл сказать. .
То еще адище… Попробуйте найти что именно за ошибка и где она возникает. В лучшем случае доберетесь до скомпилированного шаблона (там в середине списка смотрите), но это не исходный файл, это куча сгенеренного php-кода, в котором вы с трудом найдете взаимосвязь со своими исходными шаблонами. Ошибки в смарти — это всегда была головная боль.
Точно. Купил машину — велосипед на помойку. Он — прошлое. Ведь только люди без фантазии используют каждый инструмент по своему назначению. По парку можно и на машине прокатиться.
Вот ты же никакими CMS не пользуешься и даже свою не разрабатывал. Любой сайт с нуля. Ага. Ну для чего этот пафос? Течение IT технологий каждого выносит на разные берега. MODX позволяет стартовать, оттолкнуться. Фрилансеры сами решают каким инструментом им удобнее пользоваться. А наёмные используют стек компании. К чему эти споры?
Я первым делом смотрел твой репозиторий. Но там логика такая же как и в pdoTools — рулит всем шаблонизатор MODX. Я пошёл другой дорогой — разработка фронта полностью вынесена из MODX — роуты, контроллеры, полноценная однократная PHP шаблонизация без многоразовой компиляции страницы в PHP код на каждом этапе парсера MODX.
Твоё решение мне нравится. Для того времени очень даже. Но ты не смог сообществу разъяснить его достоинства. А я в том момент не смог его оценить по причине невысокого уровня знаний.
Вообще, когда читаешь наискосок есть минус — сути не ухватываешь. Smarty я использую только потому, что он уже есть в ядре. Вот и вся тайна. Есть планы и остальные шаблонизаторы добавить.
Та же проблема «наискосок» и с перехватчиком. Он перехватывает не ошибки Smarty, а все. Можно в роутах, в классах выкинуть исключение — и получить красивую страницу ошибки. А если это PHP ошибка, то и трассировку. Как это делает XDebug. Как это делают разработчики фреймворков.
И ещё, я на твоём месте не стал бы переживать насчёт топика. Кроме лайков ничего не будет. Много было разговоров о том, что нужно добавить в MODX что-то из современной разработки, нужен механизм REST API. Сделал. И никому это особо и не нужно. Ровно такая же тема с MODX3. Все соревнуются в остроумии по поводу его выхода. Но на самом деле, даже если он выйдет, никому он будет не нужен.
Закончу тоже народной мудростью «Все мечтают о бессмертии, но не знают чем себя занять в холодный дождливый вечер.»
Fi1osofЕще раз: вам шашечки или ехать? Не всегда сайт надо делать с нуля. И да, не всегда для этого нужна готовая CMS. Сейчас часто берут просто некую заготовку (boilerplate) и поверх нее уже свой функционал накидывают. К слову, и у меня такая есть: github.com/prisma-cms/nextjs-nexus
Но моего кода там мало. В основном это компоновка готовых сторонних решений (next-js, prisma-2, graphql и т.п.). И сейчас это нормальная практика. Сейчас вообще самостоятельно мало что пишется от и до, используются сторонние популярные решения, собираемые во едино и допиливаемые.
Ведь я как раз и пишу и делаю всё для того, чтобы можно было из MODX плавно перемещаться в стек фреймворков для решения более сложных задач без каких-либо накладных расходов на адаптацию. Чтобы пользователи MODX знакомились с техникой работы старших братьев.
В тысячный раз… Я занимаюсь программированием ради удовольствия. И мне нравится то, что я делаю. Я поучаствовал в паре проектов на Laravel, активно тусовался в их сообществе. Оттуда кстати и позвали в проекты. Но там другая атмосфера. В основном всё сводится к знаниям различных пакетов. Очень много рутинной работы и мало творчества. Да, там другие расценки. Но я на зарплате не сижу. И участвовал ради интереса.
А в нашем сообществе совершенно другая аура. Я к нему привык. И я прекрасно понимаю потолок MODX и нигде не говорил, что ему нет альтернативы. Но пока есть интерес его развивать — буду развивать. Что в этом плохого не понимаю.
Fi1osof174 вакансии на сегодня… Не густо.
Для сравнения React hh.ru/search/vacancy?text=React 7375
Наверняка ни для кого не секрет, что тех же лет 5 назад по реакту вакансий практически не было. Потому чел и говорит про почти 22 год. Это не маловажный момент.
Вот тебе для души, кому-то тоже, а какой-то молодой специалист карьеру себе планирует, учится. И вот кто-то ему говорит «Посмотри по сторонам, есть альтернативы», а ему минусов))) Короче, ничего не меняется.
Да.
Да.
Да. Её не нужно самому писать.
Да. Готовые компоненты с UI в отличие от тех же пакетов Composer, которые используются в той же Ларе, где нужно в большинстве случаев писать интерфейсы, так как архитектура у всех сайтов разная.
Fi1osofСейчас планирую делать новый проект, и вот задумался может попробовать использовать этот компонент.
Я внимательно прочитал заметку и в общем понимаю какие плюсы, но интересно именно на практике какие доп. возможности это добавляет или может упрощает реализацию каких-то моментов? Может это значительно ускоряет работу сайта? Или может что-то можно сделать такое, что Fenom не позволяет?
Цель ZoomX не шаблонизаторы менять, а подход к программированию. Smarty был выбран только потому, что он уже есть в ядре MODX. А вот кодить с ZoomX можно так, как это делают старшие браться из сообщества фреймворков со всеми вытекающими преимуществами современной разработки.
А по скорости вот тест, сделанный по инструкции в документации, для 800 ресурсов.
---------------------------------------------------------------------------------
По скорости Smarty чуть быстрее, но памяти отнимает чуть больше.