
- MODX 3
- PHP 8.2
- miniShop3


Промо-коды для интернет-магазинов на MiniShop3 — гибкие правила применения, ручная и пакетная генерация, современная Vue-админка, готовая фронтенд-форма для покупателя и корректный учёт скидки прямо в позициях заказа.
msOrderProduct.price. Чек 54-ФЗ, email-уведомления и личный кабинет показывают корректные суммы без правок шаблонов.=, !=, <, IN, BETWEEN, LIKE, CONTAINS и др.), фильтр по опциям товара.scheduled, expired, exhausted, disabled).SALE-####-??, безошибочный набор символов, защита от дублирования, превью.| Требование | Версия |
|---|---|
| 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 / msOnRemoveFromCart │
│ msOnCreateOrder / msOnChangeOrderStatus │
│ msOnManagerCustomCssJs / OnLoadWebDocument │
├─────────────────────────────────────────────────────────────┤
│ База данных │
│ ms3_promo_codes │ ms3_promo_code_usages │
└─────────────────────────────────────────────────────────────┘В отличие от классических компонентов, ms3PromoCode не выводит скидку отдельной строкой в итогах. Вместо этого скидка распределяется по подпадающим позициям и записывается напрямую в msOrderProduct.price (с сохранением оригинальной цены в properties.ms3promocode.original_price).
Что это даёт:
Подробнее: Интеграция с MiniShop3 →