Показ Количества В Корзине

Доброго времени суток!



Как сделать показ количества товара уже лежащего в корзине рядом с кнопкой “В корзину”. Т.е. должно выглядеть примерно так, как на рисунках:

[attachment=9915:1.jpg][attachment=9916:2.jpg][attachment=9917:3.jpg][attachment=9918:4.jpg][attachment=9919:5.jpg]

Самый главный вопрос: имеется ли информация о количестве в корзине доступная из шаблона (в какой переменной искать)? Если нет, то как получить из шаблона эту информацию?

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

[quote name=‘Bat1’ timestamp=‘1437468004’ post=‘223714’]

Доброго времени суток!



Как сделать показ количества товара уже лежащего в корзине рядом с кнопкой “В корзину”. Т.е. должно выглядеть примерно так, как на рисунках:

[attachment=9915:1.jpg][attachment=9916:2.jpg][attachment=9917:3.jpg][attachment=9918:4.jpg][attachment=9919:5.jpg]

Самый главный вопрос: имеется ли информация о количестве в корзине доступная из шаблона (в какой переменной искать)? Если нет, то как получить из шаблона эту информацию?

[/quote]



Посмотрите блок “Корзина”.



design/themes/responsive/templates/blocks/cart_content.tpl



Там вся информация берётся из:

{$smarty.session.cart}



Там вся корзина.



То что вам нужно, при отрисовке товаров, проверять есть ли данный товар в корзине и отображать.

Мы недавно делали похожу задачу. Если интересно, напишите мне

[quote name=‘dbazhenov’ timestamp=‘1437468494’ post=‘223717’]

То что вам нужно, при отрисовке товаров, проверять есть ли данный товар в корзине и отображать.

[/quote]

Попробовал, все показывается, все хорошо, но… как обновить количество после нажатия на кнопку “В корзину”? Если это получится сделать, то будет как раз то, что нужно…

[quote name=‘Bat1’ timestamp=‘1437472629’ post=‘223749’]

Попробовал, все показывается, все хорошо, но… как обновить количество после нажатия на кнопку “В корзину”? Если это получится сделать, то будет как раз то, что нужно…

[/quote]



При нажатии на добавить в корзину происходит JavaScript событие, к нему можно прицепить свой скрипт, который перерисует какой нибудь блок.



Посмотрите вот это видео:

http://www.youtube.com/watch?v=LujJrAAWUHo&index=12&list=PL4okpC0OV7TTkHtIu8gPcgqdYXl1z8qj9



Тут я рассказываю пример, немного с другой темы правда.



Также, можно спросить http://forum.cs-cart.com/user/11525-z3r0/ , он делал недавно такую штуку.

Функцию сделал, при щелчке на кнопке “В корзину” срабатывает.

Вопрос. Внутри этой функции как получить массив товаров лежащих в корзине?



Попробовал еще сделать немного другим путем…

Содержимое функции

<br /> (function(_, $) {<br /> jQuery(document).ready(function($) {<br /> $(document).on(&#39;click&#39;, &#39;button[type=submit][name^="dispatch[checkout.add"]&#39;, function() {<br /> $(this).addClass("add_in_cart");<br /> var form_name = $(this).parents(&#39;form&#39;).prop(&#39;name&#39;);<br /> var product_id = form_name.split(&#39;_&#39;).slice(-1)[0];<br /> var count = Number($(&#39;span#amount_&#39; + product_id).text());<br /> var new_count = Number($(&#39;input#qty_count_&#39; + product_id).val());<br /> count = count + new_count;<br /> $(&#39;span#amount_&#39; + product_id).text(count);<br /> });<br /> });<br /> }(Tygh, Tygh.$));<br />



В шаблоне \design\themes\responsive\templates\blocks\product_templates\default_template.tpl добавил в который выводится количество в корзине.

<br /> {assign var="amount" value=0}<br /> {foreach from=$smarty.session.cart.products item=p}<br /> {if $p.product_id == $product.product_id}<br /> {assign var="amount" value=$p.amount}<br /> {/if}<br /> {/foreach}<br /> ...<br /> <div class="ty-product-block__field-group product-amount"><br /> <label class="ty-control-group__label">В корзине:</label><br /> <span class="ty-control-group__item"><span id="amount_{$product.product_id}">{if $amount}{$amount}{else}нет{/if}</span>{if $amount} шт.{/if}</span><br /> </div><br />



Количество товара выводится в специальный . Функция, привязанная к кнопке “В корзину” берет количество из этого , добавляет к нему количество из поля количества и заменяет цифру в .



Добавить количество на саму кнопку “В корзину” не получилось.



Все работает, если товар не добавляется где-то еще (в другом окне например). В принципе удовлетворительно получилось.



Но возникла еще проблема: если ткнуть по кнопку “Корзина” выпадает список товаров. Если удалить из него товар, то мое количество соответственно не обновляется. Можно ли как-то прицепиться еще и к кнопке удаления товара?

[quote]

[color=#282828][font=arial, verdana, tahoma, sans-serif]Внутри этой функции как получить массив товаров лежащих в корзине?[/font][/color]

[/quote]



Вот этот файл посмотрите:

/design/themes/responsive/templates/addons/rus_pickup/views/pickup/components/maps/yandex.tpl



Просто при формировании страницы отрисовать JavaScript переменную с нужными данными и их потом использовать.



Второй вариант, отправлять Ajax запрос после добавления товара в корзину,а там уже в контроллере есть вся информация о корзине, результатом Ajax запроса, перерисовывать товар.



Блин, сложно наверно на словах выглядит :(

[quote name='dbazhenov' timestamp='1437506896' post='223819']

Вот этот файл посмотрите:

/design/themes/responsive/templates/addons/rus_pickup/views/pickup/components/maps/yandex.tpl

[/quote]

С яндексом интересно. Нужно попробовать поковырять, может что и получится…


[quote name='dbazhenov' timestamp='1437506896' post='223819']

Просто при формировании страницы отрисовать JavaScript переменную с нужными данными и их потом использовать.

[/quote]

В общем примерно так пока и получается.



Но это все отображает количество товара в корзине приблизительно. Ajax наверное тут будет предпочтительнее…


[quote name=‘dbazhenov’ timestamp=‘1437506896’ post=‘223819’]Второй вариант, отправлять Ajax запрос после добавления товара в корзину,а там уже в контроллере есть вся информация о корзине, результатом Ajax запроса, перерисовывать товар.



Блин, сложно наверно на словах выглядит :(

[/quote]

А вот какой запрос подать? В смысле куда? Какой url запроса?

[quote name='Bat1' timestamp='1437558333' post='223899']

В общем примерно так пока и получается.



А вот какой запрос подать? В смысле куда? Какой url запроса?

[/quote]


  1. Почему примерно, если отрисовывать эту переменную в обновляемом блоке, то будет всегда актуально.


  2. Свой контроллер. Смотрите видео из серии “Как работает Ajax” в плейлисте “Разработка: PHP”, видео 20-24:

    http://www.youtube.com/playlist?list=PL4okpC0OV7TTa1iFmcPTL-outH4wEMJQW



    Переношу тему в “Сделай сам”

Вот теперь уже начала вырисовываться какая-то законченная идея, что и как нужно сделать…

Спасибо вам и z3r0, все советы вместе вроде начали срастаться…



Единственное, что пока еще не совсем понял: попытался выводить что-то на кнопке “В корзину” (\design\themes\responsive\templates\buttons), но вместе с ней меняется и кнопка “Пересчитать” в самой корзине (не исключаю что и какие-то еще другие кнопки тоже, правда пока не видел). Возможно, что не там меняю… Может у вас какие-то идеи есть где нужно менять текст кнопки?

[quote name=‘Bat1’ timestamp=‘1437562451’ post=‘223931’]

Вот теперь уже начала вырисовываться какая-то законченная идея, что и как нужно сделать…

Спасибо вам и z3r0, все советы вместе вроде начали срастаться…



Единственное, что пока еще не совсем понял: попытался выводить что-то на кнопке “В корзину” (\design\themes\responsive\templates\buttons), но вместе с ней меняется и кнопка “Пересчитать” в самой корзине (не исключаю что и какие-то еще другие кнопки тоже, правда пока не видел). Возможно, что не там меняю… Может у вас какие-то идеи есть где нужно менять текст кнопки?

[/quote]



Ты бы код показал лучше сразу модулем, чтобы поставить и сказать что именно не так.

Доброго времени суток!



Сейчас резко метнулся на другие задачи. Когда освобожусь, тогда постараюсь причесать все мысли и оформить их в виде модуля…

Ну и что в итоге то? кто нибудь до ума довел? :grin:

Ну и что в итоге то? кто нибудь до ума довел? :grin:

Попробуйте наш бесплатный модуль Количество Товара В Корзине

https://www.ecom-labs.com/cs-cart-multi-vendor-moduli/cs-cart-modul-kolichestvo-tovara-v-korzine.html