Как обновить количество товаров в корзине?
Добрый день.
На всех страницах магазина висит модуль который показывает на какую сумму товаров в корзине.
Задача - показывать количество товаров в корзине.
Шаблон дефолтный. В файле index.html вот так изменила код:
{if $wa->shop} <!-- cart --> {$cart_total = $wa->shop->cart->total()} / добавила вот эту строку / {$cart_count = $wa->shop->cart->count()} <div id="cart" class="cart{if !$cart_total} empty{/if}"> a href="{$wa->getUrl('shop/frontend/cart')}" class="cart-summary"> <i class="cart-icon"></i> / добавила строку по аналогии с cart-total: / <span class="cart-count">Товаров в корзине: <strong>{wa_currency_html($cart_count)} шт.</strong></span></br> / в этой строке к стандартному коду добавила "Стоимость" и <strong> чтобы сумма была жирным шрифтом: / <span class="cart-total">Стоимость: <strong>{wa_currency_html($cart_total, $wa->shop->currency())}</strong></span> </a> <div id="cart-content"> {* <div class="cart-just-added"> %s is now in your shopping cart </div> *} </div> <a href="{$wa->getUrl('shop/frontend/cart')}" class="cart-to-checkout" style="display: none;"> [s`View cart`] </a> </div> {/if}
В результате, все показывает, количество товаров в корзине, сумму.
Задачка: при добавлении нового товара в корзину:
1. количество товара не обновляется (только если перезагрузить страницу)
2. пропадает слово "Стоимость" и жирный шрифт в общей сумме (появляется при обновлении страницы).
Такое ощущение что где-то еще надо дописать запрос или переменную count. JS знаю плохо, поэтому надеюсь на Вашу помощь.
5 ответов
Копайте cart.js в папке шаблона. По поводу второго вопроса:
В самом начале файле есть строчка
Замените на
По первому вопросу надо дописывать JS функцию updateCart. Но надо еще смотреть, возвращает ли ajax количество.
Благодарю.
При добавлении в корзину со страницы товара - страница обновляется. А после обновления и так все нормально.
А вот если из каталога добавлять товар в корзину - тут то и начинаются чудеса.
Способ
не помог исправить ситуацию.
Файл default.shop.js строку:
cart_total.html(response.data.total);
замените строкой:
cart_total.find('strong').html(response.data.total);
*таких замен должно быть две
Заработало!!!
Не обновляет если товар добавлять из категории по артикулу, но это я еще подумаю, может получится.
В подобной ситуации может помочь плагин Актуальная.Корзина.
https://www.webasyst.ru/store/plugin/shop/yartexactualcart/
Обновляет информацию о состоянии корзины без перезагрузки страницы.
Также обновляет информацию при нажатии кнопки Назад в браузере, и при работе с магазином в разных вкладках - добавили товар на одной из вкладок - плагин обновит информацию на всех остальных вкладках.
Адаптирован под более 45 тем дизайна. Также в стоимость входит настройка под какие-то необычные дизайны или задачи.