Итак, задача состоит в выводе поля выбора количества товара в модулях (последние, хиты, рекомендуемые). Что делал (по аналогии с выводом данной опции в карточке товара: модуль bestseller) catalog/controller/module/bestseller.php Код: $this->data['text_minimum'] = sprintf($this->language->get('text_minimum'), $product_info['minimum']); Код: 'minimum' => $result['minimum'], Код: if ($product_info['minimum']) { $this->data['minimum'] = $product_info['minimum']; } else { $this->data['minimum'] = 1; catalog/view/theme/default/template/module/bestseller.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"> <input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" /> <input type="hidden" name="product_id" size="2" value="<?php echo $product_id; ?>" /> <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');" class="button" /> </div> Итог: отображение окна ввода количества товара есть, при вводе любого количества- в корзину улетает 1 товар. Поправьте пожалуйста.
Вроде всё верно, только вот в контроллере, я бы проставил: Код: 'minimum' => $result['minimum'] ? $result['minimum'] : 1 , 'text_minimum' => sprintf($this->language->get('text_minimum'), $result['minimum']), То есть, что б получилось что то типа: Код: $this->data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'minimum' => $result['minimum'] ? $result['minimum'] : 1 , 'text_minimum' => sprintf($this->language->get('text_minimum'), $result['minimum']), 'rating' => $rating, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), );
Попробуй тут глянь: http://opencartforum.ru/topic/10263-модуль-добавляет-возможность-выбора-количеств/
Baco, огромное тебе спасибо, все получилось) итак решение моей проблемы (думаю реализуемо во всех модулях, буду пробовать) /catalog/view/theme/default/template/module/bestseller.tpl Найти: Код: <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" /> Заменить на: Код: <input type="text" value="1" class="item-<?php echo $product['product_id']; ?>" /> <input type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button" /> Подключаем скрипт ( я вставил после последнего </div> ): Код: <script type="text/javascript"><!-- function addQtyToCart(product_id) { var qty = $('.item-' + product_id).val(); if ((parseFloat(qty) != parseInt(qty)) || isNaN(qty)) { qty = 1; } addToCart(product_id, qty); } //--></script> Внимание! Проверить соответствие в catalog/view/javascript/common.js Код: function addToCart(product_id, quantity) { quantity = typeof(quantity) != 'undefined' ? quantity : 1; $.ajax({ url: 'index.php?route=checkout/cart/update', type: 'post', data: 'product_id=' + product_id + '&quantity=' + quantity, Если так: Код: function addToCart(product_id) { $.ajax({ url: 'index.php?route=checkout/cart/update', type: 'post', data: 'product_id=' + product_id, То меняем на: Код: function addToCart(product_id, quantity) { quantity = typeof(quantity) != 'undefined' ? quantity : 1; $.ajax({ url: 'index.php?route=checkout/cart/update', type: 'post', data: 'product_id=' + product_id + '&quantity=' + quantity,
ниасилил)))) в bestseller.tpl Код: <div class="cart"><input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" class="item-<?php echo $product['product_id']; ?>" /> <input type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button" /></div> в xml если: Код: <search position="replace"><![CDATA[<input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" class="item-<?php echo $product['product_id']; ?>" />]]></search> Код: ..... onclick="btnminus(<?php echo $minimum; ?>);"> <input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" class="item-<?php echo $product['product_id']; ?>" /> <img alt="" ....... не работает...((( убираю и там и там, или поочередно Код: class="item-<?php echo $product['product_id']; ?>" начинает работать, но при нажатии на + или - в любом товаре: число меняется только в первом товаре (ну это и понятно)))) Вот такие дела)))
проблему решил путем ввода в документ обычного js скрипта "плюс- минус" Код: </script> <style type="text/css"> span {cursor:pointer; } </style> <script type="text/javascript" > $(document).ready(function() { $('.minus').click(function () { var $input = $(this).parent().find('input'); var count = parseInt($input.val()) - 1; count = count < 1 ? 1 : count; $input.val(count); $input.change(); return false; }); $('.plus').click(function () { var $input = $(this).parent().find('input'); $input.val(parseInt($input.val()) + 1); $input.change(); return false; }); }); </script> Код: <div class="cart"><span class="minus"><img src="catalog/view/theme/default/image/minus.png"></span><input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" class="item-<?php echo $product['product_id']; ?>" /><span class="plus"><img src="catalog/view/theme/default/image/plus.png"></span> <br /> <input type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button" /></div> все работает на ура, если б не одно "но"... на кнопке при наборе количества стрелками надпись "купить" так же меняется на цифры- количество товара)))) ( скрипт отрабатывает все input*ы что есть в документе )
пришлось рисовать и менять кнопку ))) Код: <input type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button" /> на Код: <button onClick="addQtyToCart('<?php echo $product['product_id']; ?>');"><img src=catalog/view/theme/default/img/button_buy_b.png></button>
Пытаюсь сделать подобную фишку всё получилось красиво удобно, но при нажатии на + добавляет количество товаров равное значению показывать на странице(количество товаров)и +1 не могу найти в чём проблема вот мой код category.php Код: 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, category.tpl Код: <div class="qty"> <div class="quantity-adder text-center"> <div class="quantity-wrapper text-center"> <span class="add-down add-action fa fa-minus"></span> <input type="text" name="quantity" class="quantity" size="2" value="<?php echo $product['minimum']; ?>" data-maximum="<?php echo $product['quantity']; ?>" /> <span class="add-up add-action fa fa-plus" ></span> <button class="btn btn-primary" type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', $(this).parent().find('.quantity').val() );"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button> </div> </div> </div> <script> $(document).ready(function() { quantity_control(); }); function quantity_control() { $('.quantity').each(function() { var minimum = $(this).val(); var maximum = $(this).attr('data-maximum'); $(this).next().click(function () { if ((~~$(this).prev().val()+ ~~minimum) <= ~~maximum) { $(this).prev().val(~~$(this).prev().val()+ ~~minimum); } }); $(this).prev().click(function () { if ($(this).next().val() > ~~minimum) { $(this).next().val(~~$(this).next().val()- ~~minimum); } }); }); } </script> Ну и CSS разумеется, мне кажется дело в скрипте? Как исправить подскажите пож шаблон не def