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, // Value object ResolvedPrice
]);

CRUD порогов (manager)

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

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

События MiniShop3

Обрабатываются плагином mspricetiers_events (не переименовывайте без необходимости).

Основное для витрины — msOnGetProductPrice: MS3 запрашивает цену → сервис подставляет tier.

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

СобытиеИсточникНазначение
ms3variants:selectedms3VariantsПересчёт цены при смене варианта

Слушатель встроен в mspricetiers.js при mspricetiers_integrate_ms3variants = Да.

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

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;
}

См. также