Закрыть
Скидки в Webasyst 25–29 ноября 2021

Как вывести количество товаров в корзине?

На самом деле, это не один, а 2 вопроса.

1) как получить количество товаров для вывода по аналогии с {$cart_total = $wa->shop->cart->total()}

2) как изменять количество через js, по аналогии с $(".cart-total").html(data.total);

Спасибо!

10 ответов

  • 2

    1) $wa->shop->cart->count()
    $wa->shop->cart - это экземпляр класса shopCart, если что.

    2) Не понял вопроса...
    Чтобы модифицировать состав корзины, надо отправить на сервер XHR-запрос на URL'ы [cart/add/, cart/delete/ или cart/save/]. Как делается, например, на странице товара или в списке. В ответе от сервера придёт как сумма, так и количество товаров в корзине.

    • +1
      Влад Влад 16 марта 2015 04:36 #

      Леонид, спасибо большое, разобрался!

    • +1
      Виталий Виталий 19 апреля 2015 18:28 #

      Здравствуйте!

      мне в нужном месте как вставить то, чтобы вывести количество товаров?)

      $wa->shop->cart->count() - так не работает.

      извините, если что за глупый вопрос) я только начал пользоваться)

      • +1

        Может, {$wa->shop->cart->count()} ?

        • +1
          Максим Григорьев Максим Григорьев 12 декабря 2017 00:40 #

          Я таким образом вывел количество товаров в корзине в шапке вместо суммы заказа. Всё получилось, но при добавлении товара в корзину количество товара меняется опять на сумму. Что мне поменять? Я так полагаю что это делает js строка:

          cart_total.html(response.data.total);

          Но на что заменить чтобы возвращал количество товара а не сумму я не могу догнать.

          • +1
            Максим Григорьев Максим Григорьев 13 декабря 2017 19:01 #

            Разобрался

            cart_total.html(response.data.total);

            Заменил на

            cart_total.html(response.data.count);

            Не знаю почему сразу не догадался просто посмотреть весь респонс =) В шаблонах по-умолчанию это в main.js и в product.js надо менять.

    • +1
      Dima Stefantsov Dima Stefantsov 20 апреля 2015 21:39 #

      "$wa->shop->cart - это экземпляр класса shopCart, если что."
      А как я могу узнать, что с этим классом можно делать? Например описание waContact нашёл у вас в мануалах. Подозреваю что по shopCart вы отправите меня в закрытый гитхаб репозиторий исходники копать? А как тогда быть с Хабом, к которому у меня исходников совсем нет?

  • -1

    Для этой цели есть плагин Актуальная.Корзина

    https://www.webasyst.ru/store/plugin/shop/yartexactualcart/

    Им можно и вывести кол-во товаров в корзине и сделать так, чтобы корзина была всегда актуальная (и цена и кол-во если надо) - и при клике назад в браузере, пр работе в разных вкладках, при открытии страниц магазина из истории.

    Адаптирован под 45 стандартных тем дизайна. Под нестандартные задачи настраивается бесплатно.

  • 2

    В теме Дефолт

    ищем файл default.shop.js и product.js

    в файле default.shop.js ищем строку 

    var cart_total = $(".cart-total");

    ниже нее допишите:

    var cart_count = $(".cart-count");

    далее ищем строку:

    cart_total.html(response.data.total);

    и ниже нее дописываем:

    cart_count.html(response.data.count);

    еще чуть ниже есть еще одна такая же строка: cart_total.html(response.data.total);

    и ниже нее дописываем:

    cart_count.html(response.data.count);

    в файле product.js

    ищем var cart_total = $(".cart-total");

    ниже дописываем: var cart_count = $(".cart-count");

    далее ищем: cart_total.html(response.data.total);

    ниже дописываем cart_count.html(response.data.count);

    со скриптами все

    теперь в шаблоне в нужном месте выводим:

    {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><i class="count">[`Товаров: `]</i>
    <i class="cart-count">
    {if $cart_total && $cart_count}
    {$cart_count}{/if}</i>
    <strong class="cart-total">
    {wa_currency_html($cart_total, $wa->shop->currency())}</strong>
    </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
      luzh1n luzh1n 28 октября 2021 23:23 #

      Подскажите, пожалуйста. По вашему лайфхаку всё получилось. А как сделать чтобы это работало при изменении количества товаров в корзине нового /order (да и старого вида /cart) тоже?

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите