Имеется вот такая конструкция.... Код: <input type="text" value="<?php echo $product['minimum']; ?>" class="item-<?php echo $product['product_id'];?>" /> <button type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');" class="button" /> <i class="fa fa-shopping-cart"></i> </button> По клику на кнопку срабатывает функция.... PHP: function addQtyToCart(product_id, qty_minimum) { var qty = $('.item-' + product_id).val(); if ((parseFloat(qty) != parseInt(qty)) || isNaN(qty)) { qty = qty_minimum; } cart.add(product_id, qty);} Проблема создаётся тогда, когда на одной странице есть два одинаковых товара. Например один в модуле АКЦИИ, а второй в ПОСЛЕДНИЕ. У их инпута один и тот же класс, соответственно когда я пытаюсь положить в корзину например 10 шт, то функции передаются данные из другого инпута с таким же классом. В голову пришла лишь идея дополнительной маркировки инпутов. Например в контроллере special.php и latest.php, в массив продукта добавить элемент 'marker' со значением special и latest. В шаблон внести следующие изменения..... Код: <input type="text" value="<?php echo $product['minimum']; ?>" class="item-<?php echo $product['product_id'];?>-<?php echo $product['marker'];?>" /> <button type="button" value="<?php echo $button_cart; ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>', '<?php echo $product['marker'];?>');" class="button" /> То бишь делаем класс инпута уникальным и передаём функции значение "маркера" $product['marker']... PHP: function addQtyToCart(product_id, qty_minimum, marker) { var qty = $('.item-' + product_id + '-' marker).val(); if ((parseFloat(qty) != parseInt(qty)) || isNaN(qty)) { qty = qty_minimum; } cart.add(product_id, qty);} Всё бы ничего, но ведь теперь надо все товары "промаркировать". Либо выносить эту функцию отдельно в каждый шаблон (сейчас она в common.js) и там уже задавать уникальность классов для инпута. Либо каким то образом заставить передавать данные именно из того инпута из карточки которого жмётся кнопка "в корзину". Может у кого то появится идея!
Чёт было подобное уже. Как делал уже не помню... У продуктовых модулей есть такое: <?php echo $data['name']; ?><?php echo $module; ?>, вот их можно использовать...
а зачем писать свой js когда штатный и так принимает кол-во?? Про кол-во даже инструкция есть в соответствующем разделе ))
Принимать то принимает! Но как его туда передать? Для этого и написан код. А можно ссылку! Не смог найти!
обманул, не в инструкциях )) http://forum.opencart-russia.ru/threads/quantity-u-tovarov-na-str-spiska-tovarov.148/
@Vlad, спасибо! Такое решение мне по душе. А при дублировании товара помогает вот это.... PHP: $(this).parent().find('#quantity').val() ); Собственно это и есть решение к моей проблеме! Но я пожалуй снесу свой скрипт и буду пользоваться штатным.