Есть 20-30 однотипных товаров (различающихся диаметрами, размерами и пр.)
Хотелось чтобы выбирали необходимое количество товаров и добавляли в корзину все эти товары на одной странице.
1. Все товары были списком, в таблице.
2. Напротив каждого товара была кнопка "В корзину" и окошко для ввода количества.
3. Не выходило бы всплывающее окно - "Продолжить покупки - перейти в корзину" каждый раз, когда добавил какой-то тип товара
Выбрал:
Товар 1 - 10 шт.
Товар 2 - 25 шт.
Они ушли в корзину - а покупател при желании перешёл на другую страницу и там выбрал еще какие-то товары из другой таблицы...
Добавлено: Добавление множества товаров в корзину на одной странице20.05.13 14:07:01
Есть готовая стоковая функция amiCart.add, которая получает данные, отправляет их через AJAX и возвращает результат в виде обновленного спецблока корзины. Достаточно вклиниться напрямую во второй этап - отправку через AJAX. Это будет:
Т.е. все, что нужно для групповой передачи и обновления корзины - URL сайта, URL страницы добавления товаров и массив данных о самих товаров (циклом собрать, например или кому как удобно).
Добавлено: Добавление множества товаров в корзину на одной странице14.10.13 20:30:18
Не, сделаем круче - сразу кнопку, по нажатию которой в корзину полетят все товары, количество которых стоит больше нуля )
addItems = function() {
hashLink = '';
url = location.origin;
urlCat = url+location.pathname;
itemsCount = $('.eshop-item-list__container:eq(0) .eshop-item-small').length;
$('.eshop-item-list__container .eshop-item-small').each(function(i) {
var idItem = Number(($(this).find('.eshop-item-small__cart-form').eq(0).attr('name')).replace(/\D+/g,"")/10); // получаем ID товара
var qtyValue = $(this).find('.eshop-item-small__quantity:eq(0)').attr('value'); // получаем количество товара
if(qtyValue > 0) { // если количество одного товара из набора больше нуля, то добавляем его в корзину
if(hashLink == '') {
hashLink = '?&itemId['+i+']='+idItem+'&qty['+i+']='+qtyValue;
} else {
hashLink += '&itemId['+i+']='+idItem+'&qty['+i+']='+qtyValue;
}
}
});
hashLink += '&action=add';
amiCart.sendRequest(url, urlCat, hashLink);
}
$('#index_html').find('div:eq(0)').after('<input value="Добавить все товары с количеством > 0" type="button" onclick="addItems();" />');
Целиком код запустить можно на главной http://business.amiro.ru/ в JS-консоли. Разумеется это хардкод, сделанный конкретно под верстку демо-сайта ) Но кому понадобится - переделать под свой лад труда не составит.
Кнопка "Добавить все товары с количеством > 0" появится сразу после анонса описания ИМ.
Добавлено: Добавление множества товаров в корзину на одной странице14.10.13 21:30:27
var idItem = Number(($(this).find('.eshop-item-small__cart-form').eq(0).attr('name')).replace(/\D+/g,"")/10);
Получилась в итоге не совсем верной.. Т.е. из атрибута name="spec_eshop_special_00100011020000qty_203_0" нужно вытащить айдишник товара 203, а получается все число, вместе с префиксом спецблока. Тут лучше в шаблоне поставить какой-нибудь data-item-id="##itemid##" и брать значение уже из него:
$(this).attr('data-item-id');
В общем, хардкод, что тут скажешь
Добавлено: Добавление множества товаров в корзину на одной странице13.11.13 15:01:11
Еще вариант (для чайников, как я). Добавляем товары в каталог товаров.На вкладке Параметры и SEO ставим птичку "не отображать в списках". При этом в прайс-листе этот товар все равно будет отображаться. Не забываем в настройках прайс-листа установить опцию, разрешающую добавлять товары в корзину прямо из прайс листа. Создаем табличку со списком товаров, на "Добавить в корзину" (или любой другой текст) делаем гиперссылку. Тип ссылки - активный сценарий. Текст ссылки копируем из прайс-листа со своего сайта. Вот только при этом нельзя указать количество товара, но его можно изменить позже, при просмотре своей корзины.