Собственно, надо, чтоб покупатель отправлял в корзину нужное количество товара, просматривая категорию/подкатегорию (не заходя в описание самого товара) Сделал: - в catalog/controller/product/category.php после Код: 'product_id' => $result['product_id'], вставил Код: 'minimum' => $result['minimum'], - в catalog/view/theme/default/template/product/category.tpl заменил Код: <div class="cart"> <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button" /> </div> на Код: <div class="cart"> <div> <input type="text" name="quantity" size="2" value="<?php echo $product['minimum']; ?>" id="quantity_<?php echo $product['product_id']; ?>"/> <input type="hidden" name="product_id" size="2" value="<?php echo $product['product_id']; ?>" /> <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>',document.getElementById('quantity_<?php echo $product['product_id']; ?>').value);" class="button" /> </div> </div> В итоге в корзину добавляется один товар (кроме первого по списку - он добавляется в указанном количестве)
Может кто подскажет шаблон для ocstore с таким функционалом. Нашел shop universal но он для maxystore.
Есть что-то похожее на opencart 2.x ??? Очень нужно указывать количество товара прямо йз категории и добавлять в корзину... не заходя в каждый товар.
Не помню, как на 1.5.х, но на Опенкарт 2.х все делается достаточно просто. В файле \catalog\view\theme\ВАША_ТЕМА\template\product\category.tpl, где-нибудь перед кнопкой (где - на ваше усмотрение, главное в карточке товара) PHP: <button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button> вставить поле для ввода количества и потом в кнопке в функции передавать значение этого поля. Примерно так: PHP: <input type="text" name="quantity<?php echo $product['product_id']; ?>" id="quantity<?php echo $product['product_id']; ?>" value="<?php echo $product['minimum']; ?>"/> <button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', $('#quantity<?php echo $product['product_id']; ?>').val());"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button> Естественно, оформление/расположение и т.п. на ваше усмотрение.
Подскажите, этот способ работает, но у меня стоит фильтр. В нем код вида Код: product += '<button class="button-cart" type="button" data-effect="mfp-zoom-out" onclick="get_oct_popup_add_to_cart('+value['product_id']+', '+value['minimum']+');"><i class="fa fa-shopping-basket" aria-hidden="true"></i> <span class="hidden-xs hidden-sm hidden-md">'+json['language']['button_cart']+'</span></button>'; с кодом такого вида у меня проблемы, так как не совсем понимаю js. Как правильно в данном случае написать $('#quantity<?php echo $product['product_id']; ?>').val());
Замените это: Код: get_oct_popup_add_to_cart('+value['product_id']+', '+value['minimum']+'); на это: Код: get_oct_popup_add_to_cart('+value['product_id']+', '+$('#quantity'+value['product_id']).val());+');
Как правильно добавить еще вот такой блок Код: <div class="quantity_div box"> <input type="text" class="quanq" name="quantity<?php echo $product['product_id']; ?>" id="quantity<?php echo $product['product_id']; ?>" value="<?php echo $product['minimum']; ?>"/> </div> И как правильно такой код называется - js, ajax, javascript? Хочу изучить, пригодиться.
Ajax - это технология асинхронного обмена данными с сервером. А js = javascript. То, что в последнем вашем посте - это html с вкраплениями php, а перед этим был js, в котором был завёрнут html. Как-то так: HTML: product += '<div class="quantity_div box"><input type="text" class="quanq" name="quantity'+value['product_id']+'" id="quantity'+value['product_id']+'" value="'+value['minimum']+'"/></div>';
добавление укащзанного товара в корзину не работает. во всех случаях добавляется только 1 штука, без фильтра работает нормально.
Открыл страницу, применил фильтр, положил товар в корзину. В консоли только Код: Ошибка карты кода: TypeError: NetworkError when attempting to fetch resource. URL ресурса: moz-extension://7996e511-fb2e-40c2-a6a3-cd764bd00d43/content/js/purify.min.js URL карты кода: purify.min.js.map[Подробнее] Похоже, что этот сайт использует эффект позиционирования связанный с прокруткой. Это может не очень хорошо работать с асинхронным панорамированием; см. https://developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects чтобы получить более подробную информацию и присоединиться к обсуждению связанных с этим инструментов и возможностей! index.php Use of nsIFile in content process is deprecated. Т.е как я понимаю критических ошибок которые влияют на работу скриптов нет. Хотел проверить передается ли переменная при нажатии на кнопку, но var_dump в данном случае не работает. Какие есть еще варианты проверок?
Потому что var_dump - это функция другого языка В js есть console.log(). Можно добавить внутрь функции get_oct_popup_add_to_cart, чтоб посмотреть получает ли она на вход правильное количество. А вообще, пора бы вам уже показать сайт, если действительно хотите разобраться с фильтром.
24planeta.ru Как я понимаю, нет связи input'а количества товара и количества товара передаваемого в корзину.
Я понял в чём проблема: у фильтра вот это Код: $('#quantity'+value['product_id']).val() выполняется сразу в момент генерации результатов фильтрации и, соответственно, сразу подставляется 1. Надо для фильтра заменить это: Код: onclick="cart.add('+value['product_id']+', '+$('#quantity'+value['product_id']).val()+');" на это: Код: onclick="cart.add('+value['product_id']+', $(\'#quantity\''+value['product_id']+').val());"
Тогда событие при нажатии не работает. в корзину не падает товар. :( В консоли "SyntaxError: missing ) after argument list" а где он пропущен? Вы чем пользуетесь для отладки?
Инструментами разработчика в Мозилле. И если б вы ими пользовались, то увидели бы, что конечный результат получается таким: Код: onclick="cart.add(66, $('#quantity'66).val());" То есть, всё правильно за исключением того, что кавычка стоит перед числом, а должна быть после него. Попробуйте так: Код: onclick="cart.add('+value['product_id']+', $(\'#quantity'+value['product_id']+'\').val());"
Я тоже пользуюсь Инструментами разработчика Мозиллы, но вижу только исходный код. :( Знал что дело в кавычке, но думал не хватает наоборот. Спасибо.
Не там смотрите: надо смотреть саму вёрстку после применения любой опции фильтра, когда он подменит изначальный html сгенерированным.