Skip to content
MiniShop3
MiniShop3
Современный компонент интернет-магазина для MODX 3
  1. Компоненты
  2. MiniShop3
  3. Интерфейс админки
  4. Центр уведомлений

Центр уведомлений

Управление уведомлениями о событиях заказа доступно через Extras → MiniShop3 → Уведомления.

Здесь настраивается, какие уведомления и кому отправлять при создании заказа и смене его статуса, через какие каналы (email, Telegram и др.) и по какому шаблону.

Назначение

Центр уведомлений — единая точка для управления цепочкой оповещений магазина:

  • Письмо клиенту при создании заказа.
  • Письмо менеджеру о новом заказе.
  • Уведомление клиента при переходе в статус «Оплачен», «Отправлен», «Доставлен» и т.д.
  • Дублирующее уведомление в Telegram-канал менеджеров.
  • Любые комбинации «событие → статус → получатель → канал».

Каждое уведомление — отдельная запись. На одно событие можно настроить несколько уведомлений (например, одновременно email клиенту и Telegram менеджеру).

Поля уведомления

ПолеТипОписание
eventstringТип события: смена статуса заказа, создание заказа
status_idintID статуса заказа. Только для события «смена статуса». Пусто = срабатывать на любой статус
recipient_typestringПолучатель: customer (клиент) или manager (менеджер)
channelstringКанал доставки: email, telegram и др.
enabledboolВключено / отключено
subjectstringТема письма (для email; поддерживает Fenom)
templatestringИмя чанка для тела сообщения. Пусто = стандартный шаблон канала
delayintЗадержка отправки в секундах. Требует Scheduler
positionintПорядок отправки при нескольких уведомлениях на одно событие

События

В текущей версии поддерживаются:

СобытиеIDКогда срабатывает
Создание заказаorder_createdПокупатель оформил заказ (фронтенд) или менеджер финализировал черновик
Смена статуса заказаorder_status_changedЗаказ переходит из одного статуса в другой

Для события «смена статуса» можно дополнительно ограничить поле status_id — тогда уведомление срабатывает только при переходе в указанный статус. Если оставить пустым — будет отправляться при любой смене статуса.

Получатели

  • Клиент (customer) — получает уведомление по контактам из заказа (email, телефон, Telegram chat_id, если указан).
  • Менеджер (manager) — получает уведомление по контактам, заданным в системных настройках канала (например, ms3_email_managers для email, Telegram bot chat ID для Telegram).

Каналы

Email (встроенный)

Канал по умолчанию. Использует SMTP-настройки MODX.

Параметры в системных настройках:

  • ms3_email_from — адрес отправителя.
  • ms3_email_managers — адреса менеджеров через запятую.

Для тела письма можно указать имя чанка в поле template — например, tpl.msEmail.order.new. Если поле пустое — используется стандартный шаблон канала.

Тема письма (subject) поддерживает синтаксис Fenom, можно использовать плейсхолдеры заказа:

Заказ #{$num} — изменение статуса

Telegram

Канал для отправки сообщений в Telegram (бот → клиент по chat_id или бот → канал/чат менеджеров).

Параметры (системные настройки):

  • ms3_telegram_bot_token — токен бота, полученный у @BotFather.
  • ms3_telegram_managers_chat_id — ID чата/канала менеджеров.

Для уведомления клиента нужно, чтобы у клиента в заказе был указан telegram_chat_id (через кастомное поле или авторизацию через Telegram-бота). Без этого канал для клиента работать не сможет.

SMS и кастомные каналы

В коде есть скелет SMS-канала. Любой компонент может зарегистрировать собственный канал — см. раздел разработки Notification Events, событие msOnRegisterNotificationChannels. Зарегистрированные сторонним кодом каналы автоматически появляются в выпадающем списке формы.

Шаблоны сообщений

В поле template указывается имя чанка MODX, который рендерится через Fenom. Доступные плейсхолдеры:

  • {$order} — массив полей заказа (num, cost, status_id и т.д.).
  • {$customer} — данные клиента.
  • {$products} — массив позиций заказа.
  • {$status_name}, {$old_status_name} — для события смены статуса.
  • {$shop_name} — название магазина из системной настройки.

Пример минимального чанка tpl.msEmail.order.new:

<h1>Спасибо за заказ #{$order.num}</h1>
<p>Сумма: {$order.cost}</p>
<ul>
{foreach $products as $product}
    <li>{$product.name} × {$product.count}</li>
{/foreach}
</ul>

Если чанк не указан или не найден — канал использует свой стандартный шаблон.

Задержка отправки

Поле delay (в секундах) позволяет отложить отправку. Полезно для сценариев вроде «через 24 часа после оплаты — спасибо за заказ» или «через 7 дней после доставки — попросить отзыв».

Для работы задержки требуется установленный и настроенный компонент Scheduler: уведомление встаёт в очередь как отложенная задача и отправляется по расписанию. Без Scheduler параметр игнорируется и уведомление уходит сразу.

Несколько уведомлений на одно событие

На одно событие можно настроить любое количество записей. Поле position определяет порядок отправки внутри одного события: меньшее значение — раньше.

Типовая связка для нового заказа:

PositionEventStatusRecipientChannelSubject / Template
1order_createdcustomeremail«Спасибо за заказ #{$num}» / tpl.msEmail.order.thanks
2order_createdmanageremail«Новый заказ #{$num}» / tpl.msEmail.order.new.manager
3order_createdmanagertelegram— / tpl.msTelegram.order.new

Фильтры в гриде

Над списком уведомлений три фильтра:

  • Статус заказа — показать только уведомления для конкретного статуса.
  • Канал — отфильтровать по типу канала (email / telegram / ...).
  • Получатель — клиент или менеджер.

Фильтры применяются по кнопке «Применить», сбрасываются по «Очистить».

Действия

  • Добавить уведомление — открывает диалог создания.
  • Редактировать (иконка карандаша) — диалог правки записи.
  • Включить / отключить — чекбокс в первой колонке грида, переключает поле enabled без перехода в редактор.
  • Удалить (иконка корзины) — с подтверждением.

Связанные разделы

  • Системные настройкиms3_email_from, ms3_email_managers, ms3_telegram_bot_token, ms3_telegram_managers_chat_id и др.
  • Справочник статусов заказа — определяет, какие status_id доступны для привязки. Настраивается в админке (MiniShop3 → Настройки → Статусы).
  • События уведомлений — подписка плагинов, регистрация кастомных каналов.

Частые вопросы

Письма не отправляются. Проверьте: системную настройку ms3_email_from, SMTP-настройки MODX, лог ошибок MODX (там пишется ошибка отправки конкретного канала с пометкой [ms3] Notification error), статус «Включено» у нужной записи в Центре уведомлений.

Уведомление пришло на старый email клиента, а не на тот, что в форме заказа. Известное поведение, причина — в текущей реализации канала. См. issue #218 и связанный архитектурный аудит #219.

Хочу свой канал отправки (например, push в мобильное приложение). Нужен плагин на событие msOnRegisterNotificationChannels, который зарегистрирует класс канала, реализующий ChannelInterface. См. события уведомлений.