После удаления товара через 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;
}
Техническая поддержка MODX
Сайт лежит, тормозит или остался без разработчика?
Переезд с MODX 2 на 3, PHP 7 на 8, скорость и безопасность. Поддержка со сроками и ответственностью, а не совет в чате.
Подробнее
Реклама
Комментарии: 4
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
А текущий товар удаляется оттуда с помощью JS. Теоретически, там можно попробовать подцепиться к доп товарам, по каким-нибудь data-атрибутам и тоже их удалить из вёрстки.
Но вообще можноо смотреть и в эту сторону полного ajax обновления содержимого: modx.pro/solutions/3942
Например такой: