
- MODX 3
- PHP 8.1
- miniShop3


Компонент интегрируется в расчёт стоимости корзины через событие MiniShop3.
| Свойство | Значение |
|---|---|
| Событие | msOnGetCartCost |
| Назначение | Применить скидку к итоговой стоимости корзины |
scriptProperties) | Ключ | Тип | Описание |
|---|---|---|
cost | float | Текущая рассчитанная стоимость корзины |
cart | mixed | Корзина (объект/структура зависит от версии MS3) |
draft | object|null | Черновик заказа |
Плагин передаёт массив в FtbDiscountService::apply($scriptProperties).
returnedValues) $modx->event->returnedValues['cost'] = $newCost;MiniShop3 использует returnedValues['cost'], если ключ задан.
При успешном применении скидки плагин также заполняет:
returnedValues['ftb_discount']['amount']returnedValues['ftb_discount']['message']Если на msOnGetCartCost подписано несколько плагинов, итоговая стоимость зависит от приоритета вызова в MODX.
Компонент поддерживает вывод плашки «Скидка на первый заказ».
Добавьте в шаблон/чанк формы заказа:
[[!ms3ftbDiscountBanner]]{$modx->runSnippet('ms3ftbDiscountBanner', [])}Сниппет:
ftb_discount_type, ftb_discount_value, ms3_currencyПлагин ftb_discount на событиях OnWebPageInit/OnWebPagePrerender подключает:
assets/components/ms3firsttimebuyerdiscount/css/*.css)assets/components/ms3firsttimebuyerdiscount/js/ftb-order.js)window.MS3FTB_ELIGIBLE_URLftb-order.js:
email и phone на форме заказаms3.orderAPI.add(...)updateOrderCosts / getCost)assets/components/ms3firsttimebuyerdiscount/eligible.phpassets/components/ms3firsttimebuyerdiscount/eligible.php возвращает:
{"eligible": true}или
{"eligible": false}на основе getPaidOrdersCountByContact(email, phone, 0).
ms3_status_for_stat Используется для определения «оплаченных» заказов при проверке first-time buyer.
ms3_status_new Автоматически добавляется сервисом к учитываемым статусам как маркер первого заказа.
Если ms3_status_for_stat пуст, сервис считает оплаченных заказов 0 и пишет warning в лог ftb (один раз за запрос).
Компонент использует:
MiniShop3\Model\msOrderMiniShop3\Model\msOrderAddressДля гостей используется join msOrder.id = msOrderAddress.order_id.