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


Промо-коды для MiniShop3 — гибкие правила применения, ручная и пакетная генерация, Vue-админка, готовая форма для покупателя и учёт скидки прямо в позициях заказа.
msOrderProduct.price. Чек 54-ФЗ, email-уведомления и личный кабинет показывают корректные суммы без правок типовых шаблонов MS3 (детали — Интеграция с MiniShop3).=, !=, <, IN, BETWEEN, LIKE, CONTAINS и др.), фильтр по опциям товара.scheduled, expired, exhausted, disabled).SALE-####-??, безошибочный набор символов, защита от дублирования, предпросмотр.window.ms3PromoCode для собственных интеграций в любой фронтенд.assets/components/ms3promocode-overrides/ без правок пакета.| Требование | Версия |
|---|---|
| MODX Revolution | 3.0+ |
| MiniShop3 | 1.10+ |
| PHP | 8.2+ |
| MySQL / MariaDB | 8.0+ / 10.3+ |
После установки:
ms3_promo_codes и ms3_promo_code_usages будут созданы.{* В шаблоне корзины *}
{'!ms3PromoCodeForm' | snippet}Готово — покупатель видит форму ввода промо-кода, скидка применяется и распределяется по позициям заказа.
Подробнее: Быстрый старт →
┌─────────────────────────────────────────────────────────────┐
│ Покупатель │
├──────────────────────┬──────────────────────────────────────┤
│ SSR-сниппет │ Headless JS-API │
│ (ms3PromoCodeForm) │ (window.ms3PromoCode) │
├──────────────────────┴──────────────────────────────────────┤
│ Web API │
│ /api/v1/promo/{apply,remove,validate,current} │
├─────────────────────────────────────────────────────────────┤
│ Сервисы │
│ ApplicationService → ValidationService → DiscountCalc. │
│ → RuleEngine → UsageTracker │
├─────────────────────────────────────────────────────────────┤
│ Плагин ms3PromoCode │
│ Корзина: msOnAddToCart / msOnChangeInCart / │
│ msOnChangeOptionInCart / msOnRemoveFromCart │
│ Админ: msOn{Create,Update,Remove}OrderProduct │
│ Жизнь: msOnCreateOrder / msOnChangeOrderStatus │
│ Загруз.: msOnManagerCustomCssJs / OnLoadWebDocument │
├─────────────────────────────────────────────────────────────┤
│ База данных │
│ ms3_promo_codes │ ms3_promo_code_usages │
└─────────────────────────────────────────────────────────────┘В отличие от классических компонентов, ms3PromoCode не выводит скидку отдельной строкой в итогах. Скидка распределяется по подпадающим позициям и записывается в msOrderProduct.price. Оригинальная цена сохраняется в properties.ms3promocode.original_price.
Что это даёт:
Подробнее: Интеграция с MiniShop3 →