Skip to content
msPriceTiers
msPriceTiers
Оптовые цены по количеству для MiniShop3 — пороги на товаре и категории, сумма корзины, шаблоны, массовые операции, ms3Variants
  1. Компоненты
  2. msPriceTiers
  3. Для разработчика
  4. События MODX

События MODX

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

Вызываются из PriceTierService и процессоров CRUD.

mspricetiersOnBeforeResolvePrice

Перед выбором порога и расчётом цены.

php
$modx->invokeEvent('mspricetiersOnBeforeResolvePrice', [
    'product_id' => $productId,
    'quantity' => $quantity,
    'base_price' => $basePrice,
    'options' => $options,
    'tiers' => $tiers,
]);

Можно изменить массив tiers или отменить применение порога в коде плагина.

mspricetiersOnResolvePrice

После расчёта.

php
$modx->invokeEvent('mspricetiersOnResolvePrice', [
    'product_id' => $productId,
    'quantity' => $quantity,
    'resolved_price' => $resolvedPrice,
]);

CRUD порогов (manager)

СобытиеКогда
mspricetiersOnBeforeSaveTierПеред созданием/обновлением порога
mspricetiersOnSaveTierПосле сохранения
mspricetiersOnBeforeRemoveTierПеред удалением
mspricetiersOnRemoveTierПосле удаления

Подключите плагин на нужные события в Элементы → Плагины.

События MiniShop3

Обрабатываются плагином mspricetiers_events.

СобытиеНазначение
msOnGetProductPriceПодстановка цены по порогу (приоритет 15)
msOnProductsLoadПодготовка списка товаров
msOnProductPrepareПлейсхолдеры карточки
msOnBeforeAddToCartПеред добавлением в корзину
msOnAddToCartПосле добавления
msOnBeforeChangeInCartПеред изменением количества
msOnChangeInCartПосле изменения количества
msOnBeforeGetCartПеред чтением корзины (сохранение цен по порогам)
msOnGetCartПри отдаче корзины (пороги по количеству и по сумме заказа)

События в браузере

СобытиеИсточникНазначение
ms3variants:selectedms3VariantsПересчёт цены при смене варианта
ms3:cart:updatedMiniShop3Обновление блоков [data-mspt-live]
mspricetiers:cart:updatedmspricetiers.jsПосле обновления секций корзины

Слушатели ms3variants:selected и ms3:cart:updated встроены в mspricetiers.js при включённых настройках.

Пример плагина (логирование)

php
<?php
switch ($modx->event->name) {
    case 'mspricetiersOnResolvePrice':
        $rp = $scriptProperties['resolved_price'] ?? null;
        if ($rp) {
            $modx->log(modX::LOG_LEVEL_INFO, '[msPT] product ' . $scriptProperties['product_id']
                . ' qty ' . $scriptProperties['quantity']
                . ' price ' . $rp->getPrice());
        }
        break;
}

См. также