Skip to content
  1. Компоненты
  2. msCurrency
  3. Для разработчика

События MODX

msCurrency вызывает собственные события и подписан на события MiniShop3 через плагины.

События компонента

СобытиеКогдаПараметры
mscOnToggleCurrencyПользователь сменил валюту на витринеcurrency — массив/объект валюты
mscOnGetPriceПосле конвертации в getPrice()price, newPrice, currencyId, course
mscOnBeforeUpdateProductPriceПеред записью price / old_price из msc_* при сохранении товараproduct, msc_price, price, oldPrice, currencyId, setId (0). Можно изменить price / oldPrice в $modx->event->params

mscOnGetPrice

Пример: округление вверх для USD:

php
switch ($modx->event->name) {
    case 'mscOnGetPrice':
        if ((int) $modx->event->params['currencyId'] === 2) {
            $modx->event->params['newPrice'] = ceil($modx->event->params['newPrice']);
        }
        break;
}

mscOnBeforeUpdateProductPrice

Аналог «перехвата» пересчёта базовой цены перед сохранением. Плагин может скорректировать $modx->event->params['price'].

Плагины и события MS3

ПлагинСобытияРоль
mscurrency_autoloadOnMODXInitАвтозагрузка, сервис
mscurrency_frontendOnLoadWebDocumentCSS/JS, плейсхолдеры
mscurrency_product_pricemsOnGetProductPriceЦена в валюте покупателя
mscurrency_cart_displayсобытия корзины MS3Отображение в корзине
mscurrency_order_snapshotmsOnCreateOrder, msOnSubmitOrderСнимок properties.msc
mscurrency_product_saveсохранение документаmsc_priceprice в базовой валюте
mscurrency_product_mgrmsOnManagerCustomCssJsФорма товара в админке
mscurrency_payment_currencymsOnChangeOrderStatusКод валюты в опцию платёжки
mscurrency_mfilterOnMFilterInitТип фильтра currency_price

Оформление заказа также обрабатывает MscOrderSubmitHandler через core/config/ms3.services.d/50-mscurrency.php.

Публичный API

php
$msc = msc_get_service($modx);
$msc->getPrice($price, $productId, $currencyId, $course, $isFormat);
$msc->setSelectedCurrencyId(2);
$msc->refreshPlaceholders();

DI-контейнер: \mscurrency\Application\ServiceContainer::get($modx).

См. также