Добавление нескольких товаров в корзину MiniShop
Добрый день, не подскажите, как возможно добавить в корзину сразу массив товаров за один клик по кнопке «добавить».
Например, есть поле input у каждого из списка товаров, где пользователь вбивает нужное ему количество. По клику «продолжить» попадает на страницу оформления заказа.
Вот как понять какого товара сколько он заказал?
Заранее спасибо.
Например, есть поле input у каждого из списка товаров, где пользователь вбивает нужное ему количество. По клику «продолжить» попадает на страницу оформления заказа.
Вот как понять какого товара сколько он заказал?
Заранее спасибо.
Комментарии: 14
Спасибо за ответ, я так понимаю должен сразу уже массив передавать при наличии нескольких позиций товара?
Вот в этой функции нужно добавить получение и отправку num.
Например:
Например:
$('.addToCartLink').live('click', function(e) {
var gid = $(this).data('gid');
var num = $(this).data('num'); // Получение кол-ва из параметра data-num. Нужно заменить под твою ситуацию
var params = {};
$('.params').each(function(id, param) {
params[param.name] = param.value;
});
$.post(url, {action: 'addToCart', gid: gid, num: num, data: params}, function(data) {
data = $.parseJSON(data);
showResponse(data);
cartStatus(data);
})
e.preventDefault()
})
Сейчас функция добавления товара примерно вот так выглядит:
$.post(document.location.href, {ms2_action: 'cart/add', id: 636, count: 1, options: {}})
Подскажите пожалуйста, прохожу each по товарам на странице, отправляю запросы
ответы по каждому товару успешен
joxi.ru/YmEvaJoiJbbWO2
Но в корзину попадают, то один товар, то два. Когда как. а их как видно на скрине 5 штук
Что-то с таймаутом?
ответы по каждому товару успешен
joxi.ru/YmEvaJoiJbbWO2
Но в корзину попадают, то один товар, то два. Когда как. а их как видно на скрине 5 штук
Что-то с таймаутом?
Решил через setTimeout
$(this).parents('.NaborBL').find('.itemSborka').each(function(i) {
i++;
var p_id = $(this).data('idp'),
p_cnt = $(this).find('input[name="count'+p_id+'"]').val(),
p_name = $(this).find('.itemSborkaName').text();
setTimeout(function () {
$.post(
document.location.href,
{
ms2_action: 'cart/add',
id: p_id,
count: p_cnt,
options: {}
},function( r ) {
console.log(JSON.parse( r ));
}
);
}, 100 * i);
});
Лучше вот так сделать, иначе могут быть проблемы при добавлении большого кол-ва товаров:
gist.github.com/ig0r74/359ad8a5f231a8dc6e0dd7a1b17ec430
gist.github.com/ig0r74/359ad8a5f231a8dc6e0dd7a1b17ec430
Решил оставить вариант через промисы:
/**
* Добавить список товаров в корзину
* @param products список товаров в формате {id: 1, count: 2, options: []}
*/
function addToCartAll(products) {
var addToCartOne = function(id, count, options) {
return function() {
return new Promise(function(resolve, reject) {
$.post(document.location.href, {
ms2_action: 'cart/add',
id: id,
count: count,
options: options
}, function(response) {
console.log(JSON.parse(response));
resolve();
});
});
}
}
var promise = Promise.resolve();
for (var product of products) {
promise = promise.then(addToCartOne(product.id, product.count, product.options));
}
promise.then(function() {
console.log("Все запросы выполнены последовательно");
});
}
Добрый вечер!
Реализовал из вашего примера
gist.github.com/ig0r74/359ad8a5f231a8dc6e0dd7a1b17ec430
Только вот обновить мини-корзину после такого добавления не получается.
Подскажите пожалуйста?
Реализовал из вашего примера
gist.github.com/ig0r74/359ad8a5f231a8dc6e0dd7a1b17ec430
Только вот обновить мини-корзину после такого добавления не получается.
Подскажите пожалуйста?
Игорь, приветствую! Поддерживаю вопрос на счет мини-корзины. Как её так подцепить, чтоб она обновлялась при добавлении?
Подскажите пожалуйста — как после этого обновить мини-корзину без перезагрузки
если нужно обновить только количество товаров добавленных в миникорзину то можно такой костылек использовать.
После цикла в плагине вставляем
После цикла в плагине вставляем
$cart = $miniShop2->cart->status();
print_r($cart['total_count']);
exit();
а в js дописываем следующее $.ajax({
type: "POST",
url: document.location.href,
data: {
custom_ms2_action: 'cart/add',
products: products,
count: 1,
options: {}
},
success: function(count){
$('.ms2_total_count').html(count);
}
});
Василий, очень прошу помогите. Делаем своими силами сайт, но необходимо что бы можно было добавить несколько товаров сразу из категории не заходя в товар. Карточка товара вообще не нужна. Оплатим. Прошу вас помогите. Мой скайп veneravan, или как лучше нам наладить с вами связь?
Мне хватает работы, спасибо.
Вот здесь, по моему, все понятно написано, про добавление количества товара.
Вот здесь, по моему, все понятно написано, про добавление количества товара.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.