Skip to content
ms3PromoCode
Промо-коды для MiniShop3 с гибкими правилами, генерацией по маске и интеграцией в позиции заказа
  1. Компоненты
  2. ms3PromoCode
  3. Разработка

Разработка

Документация для разработчиков, которые хотят расширить или интегрировать ms3PromoCode в своё решение.

Разделы

РазделОписание
События плагинаСобытия MS3, на которые подписан компонент
СервисыДоменные PHP-сервисы и DI
Правила (Rules)Стратегии правил фильтрации и как добавить свою
Модели и БДСтруктура таблиц и xPDO-моделей

Архитектура PHP-слоя

Controllers / Plugin

   └─→ ApplicationService (фасад)

         ├─→ PromoCodeService    (CRUD + поиск + счётчик)
         ├─→ ValidationService   (lifecycle + min_order)
         ├─→ DiscountCalculator  (расчёт + распределение)
         ├─→ RuleEngine          (matching по правилам)
         │     └─→ Rule strategies (ProductIds, Vendors, ...)
         └─→ UsageTracker        (запись + откат + restore)

Все сервисы регистрируются в DI-контейнере MODX через bootstrap.php и доступны через $modx->services->get('ms3promocode_*').

Архитектура JS-слоя

window.ms3PromoCode (headless)

   ├─ Ms3PromoCodeApiClient  (fetch wrapper)
   ├─ Ms3PromoCodeAPI        (REST endpoints mapping)
   └─ ms3PromoCode           (singleton: state + events)


            └── Ms3PromoCodeUI (DOM-обёртка, опционально)

UI-слой использует только публичный API headless-ядра — не лезет напрямую в HTTP.

Что можно расширить

РасширениеГде
Свой тип правилаДобавить класс в Rules/ + регистрация в RuleEngine
Реакция на свои событияПодписка на DOM ms3promocode:* или MS3 events
Кастомизация формы покупателяOverride-папка для CSS/JS или собственный шаблон чанка
Свои Manager API endpointsДобавить процессор в src/Processors/Mgr/ + connector.php
Кастомные системные настройкиДобавить в _build/elements/settings.php