Не работает пересчет цен в корзине
В зависимости от общего количества товара в корзине плагин устанавливает скидку на каждый товар: от 1 до 5 — 0%, от 5 до 10 — 0%, от 10 и выше — 20%.
Код плагина:
Код плагина:
switch ($modx->event->name) {
case 'msOnAddToCart': case 'msOnChangeInCart':
$tmp = $cart->get();
$price= $tmp[$key]['price'];
$tmpm = $cart->status();
$total_count = $tmpm['total_count'];
if ($total_count >= 10) {
$price=$price*0.8;
} elseif ($total_count >= 5) {
$price=$price*0.9;
} else {
$price=$price;
}
$tmp[$key]['price']=$price;
$cart->set($tmp);
break;
}Беда в том, что цена пересчитывается не у всех товаров в корзине, а только у последнего добавленного/измененного, а для того что бы у остальных она поменялась, надо у каждого оставшегося изменить кол-во. Никак не могу понять, как после увеличения/уменьшения total_count, пересчитывать цены у каждого товара в корзине автоматом. Комментарии: 8
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Следующий важный момент: изменять необходимо оригинальную цену, а не ту, которая в корзине. Пример: один раз изменили цену при достижении 5 шт., пользователь погулял по сайту, в корзине стало 20 шт. — если при втором изменении мы возьмем за основу цену, которая записана в корзине, скидка получится чрезмерной.
Если 2 варианта решения:
1) В options товара в корзине записывать оригинальную цену при добавлении
2) Каждый раз получать оригинальную цену из объекта товара
Второй вариант рациональнее.
На сайте всего один товар, меняю его цену в админке — и в корзине появляется дубль товара.
А как исправить ситуацию? Чтобы без дублей.
А то человек прийдет второй раз на сайт — а там корзина битая, два товара одинаковых и цена разная.