msOnAddToCart срабатывает только при первом добавление товара, как исправить?
Нужно чтобы при добавлении товара если больше опред суммы, то снижал цену товара, и стоимость корзины.
Код который тестил
Код который тестил
<?php
switch ($modx->event->name) {
case 'msOnAddToCart':
$res = $modx->getObject('modResource', 1);
$defaultOptPrice = (int)$res->getTVValue('opt_price__default');
$crt = $cart->get();
$modx->log(modX::LOG_LEVEL_ERROR, '
=:>' . print_r($crt));
foreach($crt as $crtItem ){
$currentGoods = $modx->getObject('modResource', (int)$crtItem['id']);
$currentGoodsOptPrice = (int)$currentGoods->getTVValue('opt_price');
if(((int)$crtItem['price'] * (int)$crtItem['count']) >= $defaultOptPrice){
$crtItem['price'] = $currentGoodsOptPrice;
}
}
$cart->set($crt);
break;
}
Кстати код выше так же не меняет результат корзины. Комментарии: 4
Так же пытался с msOnBeforeAddToCart, но там корзина меняется но постоянно только 1 товар, хотя он уже по счету 10й.
Спасибо всем, обновился, сделал так
switch ($modx->event->name) {
case 'msOnAddToCart':
$res = $modx->getObject('modResource', 1);
$defaultOptPrice = (int)$res->getTVValue('opt_price__default');
$crt = $cart->get();
$currentGoods = $modx->getObject('modResource', (int)$crt[$key]['id']);
$currentGoodsOptPrice = (int)$currentGoods->getTVValue('opt_price');
if(((int)$crt[$key]['price'] * (int)$crt[$key]['count']) >= $defaultOptPrice){
$crt[$key]['old_price'] = $crt[$key]['price'];
$crt[$key]['price'] = $currentGoodsOptPrice;
$crt[$key]['discount_price'] = $currentGoodsOptPrice;
}
$cart->set($crt);
break;
}
Потому что когда ты добавляешь второй раз тот же товар то срабатывает msOnChangeInCart
странно, добавлял один и тот же товар 10 раз, и плагин все равно работает как нужно.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.