После удаления товара через API корзине не обновляется
Добрый день.
Объясню сначала задачу:
1. При заказе товара с определенного раздела, в корзину нужно добавить товар с определенным ID (товар-доставка)
2. Также все должно корректно работать при обновлении корзины и удалении товаров из корзины (если в корзине не осталось товаров с данного раздела, то и доставку нужно убирать)
Но почему-то у меня доставка удаляется но висит в корзине до перезагрузки страницы.
Вот мой стремный код если есть решение изящнее то буду очень благодарен. По сути — нужно установить определенную сумму доставки при наличии в корзине товаров из определенного раздела (категории)
Объясню сначала задачу:
1. При заказе товара с определенного раздела, в корзину нужно добавить товар с определенным ID (товар-доставка)
2. Также все должно корректно работать при обновлении корзины и удалении товаров из корзины (если в корзине не осталось товаров с данного раздела, то и доставку нужно убирать)
Но почему-то у меня доставка удаляется но висит в корзине до перезагрузки страницы.
Вот мой стремный код если есть решение изящнее то буду очень благодарен. По сути — нужно установить определенную сумму доставки при наличии в корзине товаров из определенного раздела (категории)
<?php
switch ($modx->event->name) {
case 'msOnBeforeAddToCart':
$delivery = 0;
$parent = $product->get('parent');
if ($parent == 49 || $parent == 51 || $parent == 52 || $parent == 53 || $parent == 54 || $parent == 55 || $parent == 56) {
foreach($cart->get() as $key => $value){
if ($value['id'] == 460) {
$delivery++;
}
}
if ($delivery == 0) {
$cart->add(460);
}
}
break;
case 'msOnChangeInCart':
case 'msOnRemoveFromCart':
$delivery = 0;
$parent = 0;
foreach($cart->get() as $key => $value){
if ($value['id'] == 460) {
$delivery++;
$keys = $key;
}
if ($product = $modx->getObject('msProduct', $value['id'])) {
$pparent = $product->get('parent');
if ($pparent == 49 || $pparent == 51 || $pparent == 52 || $pparent == 53 || $pparent == 54 || $pparent == 55 || $pparent == 56) {
$parent++;
}
}
}
if ($delivery == 0 && $parent != 0) {
$cart->add(460);
}
else if ($delivery == 1 && $parent == 0) {
$cart->remove($keys);
}
break;
}
Комментарии: 4
Помогииите)
Корзина не перерисовывается автоматически.
А текущий товар удаляется оттуда с помощью JS. Теоретически, там можно попробовать подцепиться к доп товарам, по каким-нибудь data-атрибутам и тоже их удалить из вёрстки.
Но вообще можноо смотреть и в эту сторону полного ajax обновления содержимого: modx.pro/solutions/3942
А текущий товар удаляется оттуда с помощью JS. Теоретически, там можно попробовать подцепиться к доп товарам, по каким-нибудь data-атрибутам и тоже их удалить из вёрстки.
Но вообще можноо смотреть и в эту сторону полного ajax обновления содержимого: modx.pro/solutions/3942
А коллбеки тут не помогут?
Например такой:
Например такой:
miniShop2.Callbacks.add('Cart.remove.response.success', 'remove_cart', function(e) {
console.log(response);
// Здесь логика
});
Надо пробовать и экспериментировать)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.