27 февраля 2026, 15:27 В настройках скидки можно выбрать «Учитывать количество акционных товаров» тогда при подсчёте суммы будет учитываться только общая стоимость товаров удовлетворяющих остальным условиям акции Вопросы / Вопрос по msProductDiscounts 4 0
20 февраля 2026, 19:08 Вот тебе моё мнение, через полгода-год заказчикам будем всё равно на чём ты будешь делать сайт, гораздо больше их будет волновать вопрос: умеешь ли ты пользоваться ИИ-агентам? Именно ИИ позволяет ускорится в два-три раза и твой стэк уже не имеет значение, важно будет только умение решать бизнес-задачи и ставить задачи ИИ-агенту. Так что рекомендую начинать осваивать именно эти технологии. Вопросы / Вопрос по будущему MODX и стратегии развития. 4 0
20 февраля 2026, 18:45 minishop3 недавно вышел, он ещё не прошёл обкатку и без опыта в разработке переезжать, наверное, не стоит. Многое из того, что тебе нужно @Николай Савин уже либо сделал, либо это у него в планах. Поддержать Николая можно донатом. Отправить на карту СберБанка messenger.online.sberbank.ru/sl/kPLh3bewMs93eW9Hl Отправить на карту Тинькофф www.tinkoff.ru/sl/2V9U9RrcJZP Отправить на YooMoney yoomoney.ru/fundraise/RPkkYwNcL7A.230131 QIWI к сожалению недоступен до восстановления их банковской лицензии Казахстан Каспи по номеру +7 701 282 77 37 Если Вы находитесь в Казахстане и хотите сделать пожертвование на счет ИП, можем сделать официальные документы (при условии адекватной суммы). Крипта USDT TRON (TRC20) TU3gzTp2Rt3wPcts1xiXtwWiu7riC8s56q Bitcoin — BTC 1LxpXEBBCEQYoswu8tGo6TEU1C8JfmRT18 The Open Network — TON UQAeMteI6GWxyCan_QOXX8sKnDAr5ApF-9FK7f-g2qxVlz-e Со своей стороны обещаю скорый выпуск интеграции со СДЕК. Вопросы / Опыт по переносу MODX2 на MODX3 и Minishop3 2 0
18 февраля 2026, 21:22 Версия минишопа какая? Вопросы / Кастомизация minishop'a (номер телефона вместо емейла у пользователя при совершении заказа) 13 0
18 февраля 2026, 14:14 Никак. Если расскажешь задачу, возможно, подскажут другое решение. Вопросы / Кастомизация minishop'a (номер телефона вместо емейла у пользователя при совершении заказа) 13 0
18 февраля 2026, 14:12 Версия miniShop2, old_status там появился очень недавно Вопросы / Предыдущий идентификатор статуса при событии 'msOnChangeOrderStatus' 4 +1
07 февраля 2026, 22:26 процессор, который сохраняет данные, но я бы подождал обновления. Вопросы / minishop3 - не сохраняется в карточке товара "Остаток на складе" 4 0
04 февраля 2026, 10:42 IDE бы тебе помогла, там есть поиск по файлам. А в целом наверное файл должен назваться или footer или scripts, хотя может быть и base и wrapper и index и main Вопросы / Как удалить с сайта счетчик Google Analytics? 4 0
03 февраля 2026, 20:56 Файловые элементы есть? Может там? Вопросы / Как удалить с сайта счетчик Google Analytics? 4 0
24 января 2026, 13:12 Подскажите плз, старые версии еще могут быть как либо работо-способны?Нет Новые дополнения и их версии / ms_CDEK2 возвращается! 63 0
23 января 2026, 19:18 На сайтах B и C пишешь плагин на событие OnDocFormSave. В этом плагин отправляешь запрос с помощью CURL с данными ресурса на сайт A. На сайте A обрабатываешь входящий запрос: создаёшь или обновляешь ресурс пришедшими данными. Вопросы / Сбор новостей с разных сайтах на один общий 1 +1
21 января 2026, 11:28 Как будто бы 2 секунды на фильтрацию 1000 товаров без единой твшки это многовато. Новые дополнения и их версии / simpleFilters - простая фильтрация для MODX3 13 0
15 января 2026, 20:23 Вариант 1 Переопределить метод msOrderHandler::submit() таким образом, чтобы там перед установлением статуса «Новый» проверялся способ оплаты и, если оплата при получении, статус устанавливать методом minishop2::changeOrderStatus(), иначе через modResource::save(). Вариант 2. Ввести для оплаты при получении отдельный статус. Написать плагин на событие msOnChangeOrderStatus, в котором проверять способ оплаты и, если это оплата при получении, вызывать метод minishop2::changeOrderStatus() и устанавливать созданный для этого способа оплаты статус. При этом отправку писем для статуса «Новый» отключить в настройках минишопа. Вариант 3. Отключить стандартную отправку писем. Написать свой класс отправки писем и вызывать его в плагине на событие msOnChangeOrderStatus. Вот пример реализации такого класса <?php namespace CustomServices\Manage; use CustomServices\Helpers\Mailer; class MailingOrder extends Base { private Mailer $mailer; private array $mailingStatuses = [ 2 => [ 'user' => [ 'subject' => 'ms2_email_subject_paid_user', 'chunk' => 'msEmailPaid.user' ], 'manager' => [], ], 3 => [ 'user' => [ 'subject' => 'ms2_email_subject_sent_user', 'chunk' => 'msEmail.sent.user' ], 'manager' => [], ], 108 => [ 'user' => [ 'subject' => 'ms2_email_subject_sent_user', 'chunk' => 'msEmail.sent.user' ], 'manager' => [], ], 117 => [ 'user' => [ 'subject' => 'ms2_email_subject_paid_user', 'chunk' => 'msEmailPaid.user' ], 'manager' => [], ], 103 => [ 'user' => [ 'subject' => 'ms2_email_subject_paid_user', 'chunk' => 'msEmailPaid.user' ], 'manager' => [], ], ]; private array $statusData; public function __construct(\modX $modx, ?array $properties = []) { parent::__construct($modx, $properties); if ($properties['order'] && $properties['order']->get('context') !== $this->modx->context->get('key')) { $this->modx->switchContext($properties['order']->get('context')); $this->cultureKey = $this->modx->getOption('cultureKey', '', 'en'); } $this->mailer = new Mailer($this->modx); $this->statusData = []; } public function send(): bool { $statusId = $this->properties['statusId']; if (!isset($this->mailingStatuses[$statusId])) { return false; } $this->statusData = $this->mailingStatuses[$statusId]; if (!$this->properties['order']) { $this->logging->write([ 'msg' => "Mail not sent. Order not defined", ]); return false; } $pls = $this->getEmailPls(); if (!empty($this->statusData['manager']) && $mgrMailerProps = $this->getMailerProperties($pls, 'manager')) { if(!$this->mailer->send($mgrMailerProps)){ $this->logging->write([ 'msg' => "Order {$pls['num']} was not sent to manager email", 'data'=> [ 'mailerProps' => $mgrMailerProps ] ]); } } if (!empty($this->statusData['user']) && $usrMailerProps = $this->getMailerProperties($pls)) { if(!$this->mailer->send($usrMailerProps)){ $this->logging->write([ 'msg' => "Order {$pls['num']} was not sent to customer email", 'data'=> [ 'mailerProps' => $usrMailerProps ] ]); } } return true; } public function getEmailPls(): array { $pls = $this->properties['order']->toArray(); $pls['cost'] = $this->miniShop2->formatPrice($pls['cost']); $pls['cart_cost'] = $this->miniShop2->formatPrice($pls['cart_cost']); $pls['delivery_cost'] = $this->miniShop2->formatPrice($pls['delivery_cost']); $pls['weight'] = $this->miniShop2->formatWeight($pls['weight']); $pls['payment_link'] = $this->properties['paymentLink'] ?: ''; return $pls; } public function getMailerProperties(array $pls, $type = 'user'): array { $mailerProperties = []; $mailerProperties['subject'] = $this->modx->lexicon($this->statusData[$type]['subject'], $pls, $this->cultureKey); if($mailerProperties['subject'] === $this->statusData[$type]['subject']){ $mailerProperties['subject'] = $this->modx->lexicon($this->statusData[$type]['subject'], $pls, 'en'); } $mailerProperties['body'] = $this->parser->runSnippet('msGetOrder', array_merge($pls, ['tpl' => $this->statusData[$type]['chunk']])); if ($this->properties['invoicePath'] && $type === 'user') { $mailerProperties['attachment'] = $this->properties['invoicePath']; } if (!$mailerProperties['to'] = $type === 'user' ? $this->getUserEmails($pls['user_id']) : $this->getManagerEmails()) { return []; } return $mailerProperties; } public function getUserEmails(int $userId): array { if (!$profile = $this->modx->getObject('modUserProfile', ['internalKey' => $userId])) { return []; } $email = $profile->get('email'); if (!$email) { if (!$user = $this->modx->getObject('modUser', $userId)) { return []; } if (!$email = $user->get('username')) { return []; } } return [$email]; } public function getManagerEmails(): array { return array_map( 'trim', explode( ',', $this->modx->getOption('ms2_email_manager', null, $this->modx->getOption('emailsender')) ) ); } } Вопросы / [miniShop2] Дополнительная логика отправки писем при оформлении заказа 1 +1
30 декабря 2025, 22:11 Спасибо, Николай, что не бросаешь нас и развиваешь сообщество своим примером! Новости и события / Итоги 2025 года на MODX.pro 3 +1
26 декабря 2025, 19:16 Нет с плагинами ничего не делал. Проблему я понял. Подумаю что можно сделатьКак вариант передавать данные, которые могут быть изменены в плагине, как публичные свойства класса. Новые дополнения и их версии / MiniShop3 1.0.0-alpha.4 — Большое обновление админки 24 0
24 декабря 2025, 22:11 Есть поле mail_smtp_user введи туда логин, если не сработает введи email. И не забудь в emailsender корректный email прописать. Вопросы / Modx 2.8.8 еще подходит отправки почты через smtp.yandex.ru? 3 0
23 декабря 2025, 17:32 при Авторизации или Регистрациидумаю проблема в том, что при авторизации и регистрации меняется идентификатор сессии, рекомендую переключиться на сессии SendIt доступные с версии 2.7.0. В этом случае идентификатор пользователя не будет меняться. Вопросы / Sendit 5 0
30 ноября 2025, 15:25 С визуальным конструктором полей прям огонь. Горжусь тобой!))) Новые дополнения и их версии / MiniShop3 - новый релиз. 1.0.0-alpha.2 15 +1
26 ноября 2025, 21:47 На выходных займусь Новые дополнения и их версии / [CDEKIntegrate] Отправка заказов напрямую в CDEK 20 0
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
Личный кабинет на Sendit - не удается сбросить пароль Есть ли ?rp= в адресе из письма. Сниппет при пустом $_GET['rp'] молча ничего не делает (snippet.resetpassword.php:3). Некоторые почтовики/антиспам-обёртки режут query-парам...
[SendIt 2.6.0] Анализ поведения пользователя для защиты от спама (невидимая капча)... Здравствуйте. Делаю личный кабинет на Sendit и со сбросом пароля возникли проблемы. Можете подсказать, в чем ошибка? Список вопросов в одноименном разделе на modx.pro пока пуст, и,...
Minishop + честный знак (продажа маркированной продукции) В нашем случае мы решили убрать всю логику по маркировке сайта.
MiniShop3 - Не выводятся товары дополнительных категорий @SYAN ваша указанная проблема исправлена еще до версии 1.2.3 @Павлик Мышкин завел: github.com/modx-pro/MiniShop3/issues/480 github.com/modx-pro/MiniShop3/issues/481Исправим в б...
MobileDetect 2.0.0-pl функция "планшеты как стандартные браузеры не работает" в 2.1.0-pl баг исправлен
msImportExport не сохраняет родителя по умолчанию Компонент не понимает кирилические домены при загрузку фото. пример: Error download. Url : https://антаресдвери.рф/upload/iblock/a50/a50b2ef45305a3c18f6e298f1e134880.jpg. Message...
Где можно править тексты и заголовки писем? «Управление словарями» находится в панели администратора по пути: меню Система (иконка в виде шестеренки) -> Управление словарями.
Отправить на карту СберБанка messenger.online.sberbank.ru/sl/kPLh3bewMs93eW9Hl
Отправить на карту Тинькофф www.tinkoff.ru/sl/2V9U9RrcJZP
Отправить на YooMoney yoomoney.ru/fundraise/RPkkYwNcL7A.230131
QIWI к сожалению недоступен до восстановления их банковской лицензии
Казахстан Каспи по номеру +7 701 282 77 37
Если Вы находитесь в Казахстане и хотите сделать пожертвование на счет ИП, можем сделать официальные документы (при условии адекватной суммы).
Крипта
USDT TRON (TRC20) TU3gzTp2Rt3wPcts1xiXtwWiu7riC8s56q
Bitcoin — BTC 1LxpXEBBCEQYoswu8tGo6TEU1C8JfmRT18
The Open Network — TON UQAeMteI6GWxyCan_QOXX8sKnDAr5ApF-9FK7f-g2qxVlz-e
Со своей стороны обещаю скорый выпуск интеграции со СДЕК.
Переопределить метод msOrderHandler::submit() таким образом, чтобы там перед установлением статуса «Новый» проверялся способ оплаты и, если оплата при получении, статус устанавливать методом minishop2::changeOrderStatus(), иначе через modResource::save().
Вариант 2.
Ввести для оплаты при получении отдельный статус. Написать плагин на событие msOnChangeOrderStatus, в котором проверять способ оплаты и, если это оплата при получении, вызывать метод minishop2::changeOrderStatus() и устанавливать созданный для этого способа оплаты статус. При этом отправку писем для статуса «Новый» отключить в настройках минишопа.
Вариант 3.
Отключить стандартную отправку писем. Написать свой класс отправки писем и вызывать его в плагине на событие msOnChangeOrderStatus. Вот пример реализации такого класса