ms3PromoCode
Промо-коды для MiniShop3 с гибкими правилами, генерацией по маске и интеграцией в позиции заказа

Фронтенд ms3PromoCode состоит из двух уровней:
| Уровень | Описание |
|---|---|
| Headless-ядро | Глобальный объект window.ms3PromoCode — apply / remove / validate / current / события |
| UI-слой | Готовая форма ввода, монтируется по [data-ms3-promocode="form"] |
UI-слой — опциональный. Headless-ядро может работать без него — для собственных JS-интеграций (Vue/React/Svelte/любой SPA).
Управляется системной настройкой ms3promocode.frontend_assets_preset:
| Пресет | Подключаемые файлы |
|---|---|
core_ui | Headless + UI + CSS (по умолчанию) |
core | Только headless — для собственных SPA-интеграций |
none | Ничего — шаблон сам подключает нужные файлы |
assets/components/ms3promocode/
├── css/web/
│ └── ms3promocode.css # стили UI-формы
├── js/web/
│ ├── core/
│ │ ├── ApiClient.js # HTTP-обёртка
│ │ └── PromoCodeAPI.js # маппинг на REST-эндпоинты
│ ├── ms3promocode.headless.js # глобал window.ms3PromoCode
│ ├── ui/
│ │ └── PromoCodeUI.js # класс готовой UI-формы
│ └── ms3promocode.js # auto-mount UI на data-атрибуты| Документ | Описание |
|---|---|
| Шаблон формы | Чанк, data-атрибуты, override-папка |
| JS API | window.ms3PromoCode — методы и события |
Пресет core_ui (по умолчанию). В шаблоне корзины:
{'!ms3PromoCodeForm' | snippet}Всё работает — форма видна, применение/снятие через клик мышью, цены пересчитываются.
Пресет core_ui, в шаблоне свой HTML с data-ms3-promocode="form" и нужными data-ms3pc-state="empty/applied" блоками. UI-слой подхватит её автоматически.
См. Шаблон формы.
Пресет core — UI-слой не загружается. Вы пишете свой компонент (Vue/React) и используете window.ms3PromoCode.apply(...) напрямую.
См. JS API.