Доброго времени суток!
Как сделать показ количества товара уже лежащего в корзине рядом с кнопкой “В корзину”. Т.е. должно выглядеть примерно так, как на рисунках:
[attachment=9915:1.jpg][attachment=9916:2.jpg][attachment=9917:3.jpg][attachment=9918:4.jpg][attachment=9919: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('click', 'button[type=submit][name^="dispatch[checkout.add"]', function() {<br />
$(this).addClass("add_in_cart");<br />
var form_name = $(this).parents('form').prop('name');<br />
var product_id = form_name.split('_').slice(-1)[0];<br />
var count = Number($('span#amount_' + product_id).text());<br />
var new_count = Number($('input#qty_count_' + product_id).val());<br />
count = count + new_count;<br />
$('span#amount_' + 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]
- Почему примерно, если отрисовывать эту переменную в обновляемом блоке, то будет всегда актуально.
- Свой контроллер. Смотрите видео из серии “Как работает 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:
Попробуйте наш бесплатный модуль Количество Товара В Корзине