18 сентября 2025, 17:14 так, а в чем проблема во втором абзаце, не очень понял? $modx->addEventListenerClosure( 'OnWebPagePrerender', function (\MODX\Revolution\modX $modx) { (new \Namespace\YourClass($modx))->doSomething(); // $class = $modx->services->get('yourservice'); $class->doSomething(); // \Namespace\YourClass::doSomething(); // my_global_function($modx); return null; }, priority: 10, name: 'appendTestComment', replace: false ); Вопросы / Предложение нового механизма closure и слушателей событий в bootstrap неймспейсов MODX с приоритетами и именами 8 0
18 сентября 2025, 17:07 с обычными плагинами — я пока это не учитывал, но вопрос логичный. НО это не учитывается и в оригинальном методе addEventListener, так что текущая логика по сути не меняется. Оригинал: public function addEventListener($event, $pluginId, $propertySetName = '') { $added = false; $pluginId = intval($pluginId); if ($event && $pluginId) { if (!isset($this->eventMap[$event]) || empty ($this->eventMap[$event])) { $this->eventMap[$event]= []; } $this->eventMap[$event][$pluginId]= $pluginId . (!empty($propertySetName) ? ':' . $propertySetName : ''); $added = true; } return $added; }Проблема в том что карта у них строится без какой либо доп информации о плагинах, просто событие->список ID плагинов, уже отсортированных в sql запросе. То есть пересортировать ее без дополнительного запроса к базе не получится (ну или надо сохранять расширенную карту из базы при инициализации и потом при добавлении нового плагина пересобирать итоговую карту). Сейчас реализовано так, что сначала выполняются плагины из бд — и подвязанные к событию в админке, и подвязанные к событию в коде, потом все closure плагины. Вообще это больше не для того чтобы кто-то в админке вручную тыкал, а чтобы например при разработке пакета вы спокойно свой функционал раскидали по нужным событиям и не парились с созданием плагинов и привязкой/отвязкой событий при обновлении например. Вопросы / Предложение нового механизма closure и слушателей событий в bootstrap неймспейсов MODX с приоритетами и именами 8 0
18 сентября 2025, 16:50 Да, но это приоритет выполнения именно Closure слушателей — они выполняются уже после плагинов из бд Вопросы / Предложение нового механизма closure и слушателей событий в bootstrap неймспейсов MODX с приоритетами и именами 8 0
18 сентября 2025, 16:47 Вот да, я тоже из этого исхожу) Вопросы / Предложение нового механизма closure и слушателей событий в bootstrap неймспейсов MODX с приоритетами и именами 8 0
29 августа 2025, 18:05 Василий, здравствуйте! Очень интересное (и правильное) направление для развития modx экосистемы как мне кажется. В последнее время для разработки больше работаю с Laravel, но в плане управления контентом конечно очень удобен modx3 — файловый менеджер, дерево ресурсов, таблицы коллекций с инлайн редактированием и тд, на сборку удобной админки в ларавел уйдет оч много времени… Так вот на проекте веб-приложения, который начинал писать давно еще на MODx, стал постепенно внедрять по частям ларавле параллельно с modx — получается modx живет в public и core, а рядом части ларавел в app, config и тд, с кастомным бутстрап файлом. И в modx подключается автолоадер laravel и кастомный конфиг инициализации контейнера с нужными сервисами типа лога, елоквента, кеша, блейда и фасадами. И получается можно использовать их прямо в сниппетах modx. Или вообще у modx ресурса делать пустой шаблон, и в контенте через небольшой сниппет типа runController — вызов определенного своего контроллера, который по сути стандарный контроллер ларавел с валидацией, возвращает blade view. а на событие не найденной страницы вешать файл роутинга со всеми плюхами ларавел. Вопросы остаются еще с авторизацией пользователей — было бы удобно в итоге иметь вообще laravel как сервис создания фронта сайта, а modx как админку ресурсов. Очень полезно что вы написали про возможность подключения композер файла прямо через основной файл modx — у меня реализовано через отдельный композер файл, подключаемый при инициализации modx. В целом направление интеграции modx и современных инструментов кажется очень перспективным, рад что вы снова тут (хоть и статьи прошлого года)) Новые дополнения и их версии / Новый тип дополнений: mmxDatabase и mmxForms 41 0
Возможно ли реализовать возможность предоплаты за доставку на сайте? Так ради этого мне и нужно это все, чтобы клиент платил сразу при оформлении заказа, чтобы избавить себя от мусорных заявок (когда человек оставляет заявку, а предоплату делать не ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 18 px. Да и текст комментариев можно таким сделать. Для меня лично 16 — мелковато на больших экранах (в комментариях вообще 15 ...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Дополнение доступно modstore.pro/packages/photos-and-files/imageoptimizer
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeV... Добавил localizator3_default_language
msInShopNotify Начиная с версии 3.0.0-beta добавлена поддержка MiniShop3 Минимальные требования: PHP 8.4 MODX 3.2 MiniShop3
MaxNotify Обновление 1.2.0-pl (03.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет `maxNotifyFormIt`; — добавлены уведомления о заявках SendIt через hook-...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
Проблема в том что карта у них строится без какой либо доп информации о плагинах, просто событие->список ID плагинов, уже отсортированных в sql запросе. То есть пересортировать ее без дополнительного запроса к базе не получится (ну или надо сохранять расширенную карту из базы при инициализации и потом при добавлении нового плагина пересобирать итоговую карту). Сейчас реализовано так, что сначала выполняются плагины из бд — и подвязанные к событию в админке, и подвязанные к событию в коде, потом все closure плагины. Вообще это больше не для того чтобы кто-то в админке вручную тыкал, а чтобы например при разработке пакета вы спокойно свой функционал раскидали по нужным событиям и не парились с созданием плагинов и привязкой/отвязкой событий при обновлении например.
Так вот на проекте веб-приложения, который начинал писать давно еще на MODx, стал постепенно внедрять по частям ларавле параллельно с modx — получается modx живет в public и core, а рядом части ларавел в app, config и тд, с кастомным бутстрап файлом. И в modx подключается автолоадер laravel и кастомный конфиг инициализации контейнера с нужными сервисами типа лога, елоквента, кеша, блейда и фасадами.
И получается можно использовать их прямо в сниппетах modx. Или вообще у modx ресурса делать пустой шаблон, и в контенте через небольшой сниппет типа runController — вызов определенного своего контроллера, который по сути стандарный контроллер ларавел с валидацией, возвращает blade view. а на событие не найденной страницы вешать файл роутинга со всеми плюхами ларавел. Вопросы остаются еще с авторизацией пользователей — было бы удобно в итоге иметь вообще laravel как сервис создания фронта сайта, а modx как админку ресурсов.
Очень полезно что вы написали про возможность подключения композер файла прямо через основной файл modx — у меня реализовано через отдельный композер файл, подключаемый при инициализации modx. В целом направление интеграции modx и современных инструментов кажется очень перспективным, рад что вы снова тут (хоть и статьи прошлого года))