27 декабря 2025, 16:41 MODX, как и любой основанный на PHP фреймворк пишет 500 ошибки в error_log. Никаких специальных настроек в нем нет. Все зависит от настроек хостинга\сервера. Бывает что запись ошибок просто отключена, бывает что путь к журналу ошибок нестандартный. Короче вряд ли вопрос именно в MODX. Вопросы / Отладка 500 ошибки MODX 1 0
26 декабря 2025, 20:05 Набросал вариант реализации плагина, чтобы можно было его вызвать дважды, передать изменения из первого во второй и применить оба изменения. При использовании $modx->eventData все работает. <?php /** * Плагин: msDiscount10_v2 * События: msOnGetCart * * Используем $modx->eventData для передачи между плагинами */ switch ($modx->event->name) { case 'msOnGetCart': // Читаем данные: из $modx->eventData (если предыдущий плагин записал) // или из $scriptProperties (оригинальные) if (isset($modx->eventData['msOnGetCart']['data'])) { $data = $modx->eventData['msOnGetCart']['data']; } else { $data = $scriptProperties['data']; } if (!is_array($data) || empty($data)) { break; } // Применяем скидку 10% foreach ($data as $key => $item) { $data[$key]['price'] = $item['price'] * 0.9; $data[$key]['cost'] = $data[$key]['price'] * $item['count']; } // Сохраняем для следующих плагинов $modx->eventData['msOnGetCart']['data'] = $data; // И для контроллера MS3 $modx->event->returnedValues['data'] = $data; break; }Справедливости ради, в некоторых местах $modx->eventData игнорируется. Это исправлю к следующему релизу Новые дополнения и их версии / MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24 +1
26 декабря 2025, 19:26 Новые дополнения и их версии / MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24 0
26 декабря 2025, 19:20 {$_modx->runSnippet("!msCart", [])}В корзине теперь есть обязательный параметр selector, где мы прописываем обычный JS селектор. Корзин может быть много. JS должен понимать куда монтировать обновленные данные. Как это работает: При вызове msCart сниппет регистрирует себя с уникальным токеном После добавления товара сервер возвращает отрендеренный HTML с этим токеном JavaScript (CartUI.js:316-318) ищет selector чтобы знать куда вставить HTML Если selector не указан — обновление пропускаетсяРешение: Оберните корзину в контейнер с id и укажите параметр selector: <div id="header-cart"> {$_modx->runSnippet('!msCart', [ 'selector' => '#header-cart', 'tpl' => 'tpl.msMiniCart' ])} </div>Или короче через Fenom: <div id="header-cart"> {'!msCart' | snippet : ['selector' => '#header-cart', 'tpl' => 'tpl.msMiniCart']} </div>Важно: selector — CSS-селектор контейнера куда будет монтироваться обновлённый HTML Контейнер должен оборачивать вызов сниппета (HTML заменяется внутри него) Для мини-корзины в шапке лучше использовать чанк tpl.msMiniCart Новые дополнения и их версии / MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24 +1
26 декабря 2025, 19:03 Deprecated: Optional parameter $options declared before required parameter $info is implicitly treated as a required parameter in ....../core/components/minishop3/src/Model/msProductFile.php on line 201Это известная проблема совместимости с PHP 8.0+. В файле msProductFile.php на строке 201 необязательный параметр объявлен перед обязательным, что устарело в PHP 8. Временное решение: Откройте файл core/components/minishop3/src/Model/msProductFile.php и измените строку 201: // Было: public function makeThumbnail($options = [], array $info) // Стало: public function makeThumbnail(array $options, array $info)Это временный фикс. Исправление будет включено в следующее обновление MiniShop3. Новые дополнения и их версии / MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24 0
26 декабря 2025, 14:58 Для добавления полей во все основные модели заложена специальная утилита (msCustomer там сейчас нет, добавлю). Добавляешь поля через этот визуальный конструктор. Далее работаешь с ними как с родными. Просто выводишь и сохраняешь. Новые дополнения и их версии / MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24 0
26 декабря 2025, 14:56 1) Так я вроде в каждом анонсе пишу, что делаю конфигурируемые страницы. У нас уже есть возможность не городить плагины, а добавлять поля в модели централизовано из одного места. Также и во всех основных страницах админки стараюсь сделать возможность добавлять поля в нужном месте страницы. Это тоже централизовано из одной утилиты. Итого у нас есть две утилиты 1. Добавление полей в базу данных и в карту модели. 2. Добавление полей на страницу админки. Есть еще третья утилиты — вывод колонок в таблицах-гридах. 2) Нет с плагинами ничего не делал. Проблему я понял. Подумаю что можно сделать Новые дополнения и их версии / MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24 0
25 декабря 2025, 13:57 Ну тогда уж и плюсик ставь к посту. Новые дополнения и их версии / MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24 0
25 декабря 2025, 13:56 Того гляди и начнет народ MODX3 пользоваться. Новые дополнения и их версии / resComments — многоуровневые комментарии с пагинацией для ресурсов MODX3 4 0
24 декабря 2025, 21:22 В системную настройку mail_smtp_pass (SMTP пароль) вписываете пароль приложения, вместо пароля от почты и все. Никакой магии нет. Вопросы / Modx 2.8.8 еще подходит отправки почты через smtp.yandex.ru? 3 0
24 декабря 2025, 20:42 Задача закрыть все потребности никогда не стояла. Я скорее облагородил то, что уже было. Нужно же и платным компонентам дорогу для развития оставлять. Новые дополнения и их версии / MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24 0
24 декабря 2025, 20:41 Неправильные права на директорию core/packages/ Файл zip загружен с неправильным владельцем Новые дополнения и их версии / MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24 0
24 декабря 2025, 19:37 @Prihod специально для тебя выпустил релиз пораньше, чтобы ты смог скачать свежий транспортник Новые дополнения и их версии / MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24 +1
24 декабря 2025, 00:23 Нет, лайки всегда были привязаны ко времени публикации, чтобы лайками старых постов рейтинг не накручивали. Новые дополнения и их версии / MiniShop3 - новый релиз. 1.0.0-alpha.2 15 0
23 декабря 2025, 19:58 Спасибо проверю. Подскажи как устанавливал? Скачал готовый транспортник из релизов или из git исходников собрал? Новые дополнения и их версии / MiniShop3 - новый релиз. 1.0.0-alpha.2 15 0
15 декабря 2025, 19:40 Привет Григорий. Осадочек обоснованный — решение рабочее, но есть несколько моментов, которые стоит обдумать: Что смущает в текущем фиксе 1. Изменение логики метода. Оригинальный код при отсутствии сессии возвращал []. Теперь он создаёт сессию. Это может сломать логику в других местах SendIt, которые рассчитывают на пустой ответ как сигнал «сессии нет, нужно что-то сделать». 2. setcookie() без проверки заголовков Если заголовки уже отправлены — будет ещё один warning. Минимальный и безопасный фикс Если цель — просто убрать warning без изменения логики: $sessionId = $sessionId ?: ($_COOKIE['siSession'] ?? null); if (!$sessionId || !$session = $modx->getObject('siSession', ['session_id' => $sessionId, 'class_name' => $className])) { return []; }Это сохраняет оригинальное поведение: нет куки → нет сессии → пустой массив. Создание сессии должно происходить там, где это предусмотрено архитектурой компонента. Что бы я сделал Посмотрел бы, где в SendIt сессия создаётся штатно. Скорее всего есть отдельный метод типа createSession() или это происходит при первой отправке формы. Вот там и должна быть логика создания + установки куки. Твой фикс работает, но ты фактически добавил fallback-создание сессии в метод, который был рассчитан только на чтение. Если форма авторизации/регистрации работает корректно — можно оставить, но я бы откатился к минимальному варианту и понаблюдал. Вопросы / Sendit 5 0
08 декабря 2025, 10:53 По правильному нужно адаптировать проект под PHP8.1 — хуже от этого точно не станет, зато у вас появится возможность использовать более современные компоненты. Из минусов — можно потерять возможность обновлять некоторые старые компоненты (правда они особо и не обновляются) Ну и затратно может быть. Новые дополнения и их версии / ms_CDEK2 возвращается! 63 0
01 декабря 2025, 23:58 Как всегда обновленный транспортный пакет ждет вас в релизах Новые дополнения и их версии / MiniShop3: Notification Center — Революция в управлении уведомлениями 4 +3
30 ноября 2025, 19:10 У msCustomer есть поле user_id, которое связывает покупателя с modUser: // В модели msCustomer 'aggregates' => [ 'User' => [ 'class' => 'MODX\\Revolution\\modUser', 'local' => 'user_id', 'foreign' => 'id', 'cardinality' => 'one', ], ],Режимы работы 1. Автономный режим (по умолчанию) msCustomer работает независимо от modUser Покупатели авторизуются через свой email/пароль Подходит для магазинов без дополнительного функционала 2. Синхронизация с modUser Включается настройкой ms3_customer_sync_enabled При создании/обновлении modUser автоматически создаётся/обновляется msCustomer Синхронизируются: email, fullname → first_name, phone, активность При удалении modUser — покупатель НЕ удаляется (сохраняется история заказов), только отвязывается (user_id = 0) 3. Создание modUser при заказе Настройка ms3_order_register_user_on_submit При оформлении заказа создаётся системный пользователь Ему можно назначить права и группу пользователей Новые дополнения и их версии / MiniShop3 - новый релиз. 1.0.0-alpha.2 15 +2
30 ноября 2025, 14:25 Для желающих протестировать — создал релиз в GitHub. Там можно скачать готовый транспортный пакет. Новые дополнения и их версии / MiniShop3 - новый релиз. 1.0.0-alpha.2 15 +2
[videoGallery] Видео галерея YouTube, Vimeo Невозможно установить пакет с подписью: videogallery-1.4.0-beta Ошибка установки Error в /core/packages/videogallery-1.4.0-beta/modCategory/7fc931a7772edc9752c16e9c41eb5e52.reso...
mxBoard: канбан-доска для команд, людей и ИИ-агентов в MODX 3 Привет, добавил пользователя в группу mxBoard(4), создал токен. Добавляю все в postman пишет: rest: { «success»: false, «message»: «Недействительный токен.», «data...
Релиз miniShop2 ver. 4.4.1 & 4.4.2 Подскажите пожалуйста, может я что-то не знаю или упустил. Но есть ли решение по глюку с radio? Указываешь свое radio c одинаковым name и в результате при переключении получаешь вс...
Плагин EnvBadge: визуальный индикатор окружения в админке MODX3 Расскажите пожалуйста как вы настраиваете сайт на MODX 3 чтобы был dev, prod, stage. Можете описать workflow? Допустим у меня 80% — это магазины, там клиенты, продажи, все онлай...
MaxNotify Обновление компонента 1.3.0-pl (22.07.2026) — добавлено автоматическое получение полей через msOrder->toArray(); — массивы и объекты безопасно пропускаются; — стандартные...
MyFavorites MyFavorites — 3.0.0-beta Первая версия для MODX Revolution 3.x — компонент полностью переписан с нуля (PHP >= 8.4, namespaced-ядро MODX 3, PSR-4, сервис-ориентированная архит...
Справедливости ради, в некоторых местах $modx->eventData игнорируется. Это исправлю к следующему релизу
Как это работает:
- При вызове msCart сниппет регистрирует себя с уникальным токеном
- После добавления товара сервер возвращает отрендеренный HTML с этим токеном
- JavaScript (CartUI.js:316-318) ищет selector чтобы знать куда вставить HTML
- Если selector не указан — обновление пропускается
Решение:Оберните корзину в контейнер с id и укажите параметр selector:
Или короче через Fenom:
Важно:
Временное решение:
Откройте файл core/components/minishop3/src/Model/msProductFile.php и измените строку 201:
Это временный фикс. Исправление будет включено в следующее обновление MiniShop3.
Итого у нас есть две утилиты
1. Добавление полей в базу данных и в карту модели.
2. Добавление полей на страницу админки.
Есть еще третья утилиты — вывод колонок в таблицах-гридах.
2) Нет с плагинами ничего не делал. Проблему я понял. Подумаю что можно сделать
Нужно же и платным компонентам дорогу для развития оставлять.
Осадочек обоснованный — решение рабочее, но есть несколько моментов, которые стоит обдумать:
Что смущает в текущем фиксе
1. Изменение логики метода.
Оригинальный код при отсутствии сессии возвращал []. Теперь он создаёт сессию. Это может сломать логику в других местах SendIt, которые рассчитывают на пустой ответ как сигнал «сессии нет, нужно что-то сделать».
2. setcookie() без проверки заголовков
Если заголовки уже отправлены — будет ещё один warning.
Минимальный и безопасный фикс
Если цель — просто убрать warning без изменения логики:
Это сохраняет оригинальное поведение: нет куки → нет сессии → пустой массив. Создание сессии должно происходить там, где это предусмотрено архитектурой компонента.
Что бы я сделал
Посмотрел бы, где в SendIt сессия создаётся штатно. Скорее всего есть отдельный метод типа createSession() или это происходит при первой отправке формы. Вот там и должна быть логика создания + установки куки.
Твой фикс работает, но ты фактически добавил fallback-создание сессии в метод, который был рассчитан только на чтение. Если форма авторизации/регистрации работает корректно — можно оставить, но я бы откатился к минимальному варианту и понаблюдал.
Из минусов — можно потерять возможность обновлять некоторые старые компоненты (правда они особо и не обновляются)
Ну и затратно может быть.
Режимы работы
1. Автономный режим (по умолчанию)
2. Синхронизация с modUser
3. Создание modUser при заказе