<?php
switch ($modx->event->name) {
case 'msOnAddToCart':
case 'msOnChangeInCart':
case 'msOnRemoveFromCart': // Обрабатывать только события добавления в корзину и изменения количества
$cartArray = $cart->get(); // Массив корзины
$cartStatus = $cart->status(); // Состояние корзины
$totalCount = $cartStatus['total_count']; // Общее количество товаров в корзине
if ($_modx->resource.parent == 3); // ($product.parent ==3) и другие варианты - скидка все равно на все товары в корзине
elseif ($totalCount < 5) $coeff = 1; // Установка коэффициента в зависимости от количества
elseif ($totalCount < 10) $coeff = 0.8;
elseif ($totalCount < 20) $coeff = 0.7;
else $coeff = 0.6;
foreach ($cartArray as &$cartProduct) { // Обрабатываем все товары корзины
if ($product = $modx->getObject('msProduct', $cartProduct['id'])) { // Получаем объект товара по его ID в корзине
$cartProduct['price'] = $product->get('price') * $coeff; // Изменение цены
}
}
$cart->set($cartArray); // Запись нового состояния корзины
break;
}
<?php
switch ($modx->event->name) {
case 'msOnAddToCart':
case 'msOnChangeInCart':
case 'msOnRemoveFromCart': // Обрабатывать только события добавления в корзину и изменения количества
$cartArray = $cart->get(); // Массив корзины
$cartStatus = $cart->status(); // Состояние корзины
$totalCount = $cartStatus['total_count']; // Общее количество товаров в корзине
$category_count = 0;
foreach ($cartArray as &$cartProduct) { // Обрабатываем все товары корзины
if ($product = $modx->getObject('msProduct', $cartProduct['id'])) { // Получаем объект товара по его ID в корзине
if ($product->get('parent') == 3)$category_count + $cartProduct['count'];
}
}
// $category_count - здесь кол-во товаров в корзине, которые присутствуют в категории 3
if ($category_count < 5) $coeff = 1; // Установка коэффициента в зависимости от количества
elseif ($category_count< 10) $coeff = 0.8;
elseif ($category_count< 20) $coeff = 0.7;
else $coeff = 0.6;
foreach ($cartArray as &$cartProduct) { // Обрабатываем все товары корзины
if ($product = $modx->getObject('msProduct', $cartProduct['id'])) { // Получаем объект товара по его ID в корзине
$cartProduct['price'] = $product->get('price') * $coeff; // Изменение цены
}
}
$cart->set($cartArray); // Запись нового состояния корзины
break;
}