Цитата |
---|
Юрий Анатольевич пишет: Ситуация такая: Есть магазин. В описании товара есть кнопка добавления в корзину. Нажимаю - товар добавляется, страница обновляется. Кликаю ещё раз "Добавить" - страница обновляется, количество товара остаётся прежним.
Что сделать, чтобы при повторном нажатии если товар в корзине есть, то его количество бы увеличивалось на 1? |
Здравствуйте. Хотя тема старая с точно такой же проблемой столкнулся при работе с редакцией 12.0 "Малый Бизнес" при модернизации компонента bitrix:sale.basket.basket.line (для меня честно сказать загадка почему данный компонент так и не научили нормально отображать количество товаров и цену в корзине). Вообщем я работал на шаблоном компонента каталога catalog.section чтобы отображать товары списком(на подобие прайс-листа). И заметил, что при нажатии конопки "купить" товар добавляется, но только один раз. Повторно товар не добавляется.Другие товары добавляются также один раз. Решение проблемы кроется в файле шаблона (входящего в стандартную поставку) script.js. При нажатии на кнопку "купить" этот скрипт выполняет функцию addToCart() - примерно 166 строка.
Код |
---|
function addToCart(element, mode, text, type) {
if (!element && !element.href)
return;
var href = element.href;
var button = $(element);
button.unbind('click').removeAttr("href");
titleItem = button.parents(".R2D2").find(".item_title").attr('title');
imgItem = button.parents(".R2D2").find(".item_img").attr('src');
$('#addItemInCart .item_title').text(titleItem);
$('#addItemInCart .item_img img').attr('src', imgItem);
var ModalName = $('#addItemInCart');
CentriredModalWindow(ModalName);
OpenModalWindow(ModalName);
if (href)
$.get( href+"&ajax_buy=1", $.proxy(
function(data) {
$("#cart_line").html(data);
/*if (type == "cart") //picture cart in button
this.html(text).removeClass("addtoCart").addClass("incart");
else if (type == "noButton")
this.html(text);
else
this.html(text).removeClass("addtoCart").addClass("incart"); */
}, button)
);
return false;
}
|
Прошу обратить внимание на строку
Код |
---|
button.unbind('click').removeAttr("href"); |
Как раз здесь из кнопки/ссылки "купить" удаляется атрибут, необходимый для добавления товара в корзину. Если задокументировать данную строку, то товары начинают добавляться повторно. Логика тут простая: отключить добавление в корзину, т.к. товар уже добавлен. Зачем? Хороший вопрос...