Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Модуль добавляет возможность выбора количества товара из списка товаров (страница категории)


Recommended Posts

Разработчик: http://darrennolan.c...-category-page/

Работает на версии: 1.5.3.1

Как перенести данный модуль на 1.5.1.3 ? Сейчас данный модуль на версии 1.5.1.3 добавляет товары в корзину, но не берёт во внимание указанное количество, то есть если ввести количество пять он всё равно добавляет в корзину только одну штуку. Как поправить код?

Установка на русском:

Открываем /catalog/view/theme/default/template/product/category.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" />

Найти ниже:

<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);
}
Надіслати
Поділитися на інших сайтах


видимо еще в common.js надо изменения внести для функции addToCart... типа таких

function addToCart(product_id,quantity) {
$.ajax({
url: 'index.php?route=checkout/cart/update',
type: 'post',
data: 'product_id='+ product_id , 'quantity='+ quantity ,
  • +1 1
Надіслати
Поділитися на інших сайтах

Всё разобрался. Спасибо ravilr за наводку.

Меняем в catalog/view/javascript/common.js

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,
  • +1 1
Надіслати
Поділитися на інших сайтах


Теперь хочу сделать выбор количества из всплывающего окна. Можно ли это сделать?

<div class="cart">

<script type="text/javascript"><!--
$('.cart div:nth-child(3) a').click(function(){
$('#popup-options').slideUp();
$('#modal-overlay').fadeOut();
});
--></script>

<div id="modal-overlay" onclick="$('#modal-overlay').fadeOut(); $('#popup-options').slideUp()"></div>

<a class="button" style="margin-bottom: 10px" onclick="$('#modal-overlay').fadeIn(); $('#popup-options').slideDown();">
<span>Выбор количества</span>
</a>

<div id="popup-options">
<input type="text" value="1" SIZE="2" class="item-<?php echo $product['product_id']; ?>" />
<a class="button" style="margin-bottom: 10px" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');">
<span>Купить</span>
</a>
</div>

</div>

При таком коде, нажимая на кнопку купить во всплывающем окне в корзину всегда добавляется первый в списке товар (не важно рядом с каким товаром нажмешь на выбор количества). Как сделать так, чтобы добавлялся тот товар рядом с которым нажимаешь на выбор количества?

Код стилей не стал сюда копировать - не принципиально.

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Всё разобрался. Спасибо ravilr за наводку. Меняем в catalog/view/javascript/common.js

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,
Отличное решение, но есть одна маленькая загвоздка, если добавления товаров происходят, и кешируються в папке sys то в итоге, какое кол-во товаров не выбирать, всёравно добавляется в корзину кол-во равное 1, есть идеи ?
  • +1 1
Надіслати
Поділитися на інших сайтах

Отличное решение, но есть одна маленькая загвоздка, если добавления товаров происходят, и кешируються в папке sys то в итоге, какое кол-во товаров не выбирать, всёравно добавляется в корзину кол-во равное 1, есть идеи ?

А изменения, которые я описал в начале темы вы сделали?

Правильно устанавливать так:

Открываем /catalog/view/theme/default/template/product/category.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" />

Найти ниже:

<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);
}

Меняем в catalog/view/javascript/common.js

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,
Надіслати
Поділитися на інших сайтах


  • 5 months later...

Хочу тоже вставить возможность выбора количества товара, но у меня не дефолтная тема (1.5.3.1). Помогите подружить код с уже имеющимся.

Тот что есть в темплейте:

<div class="cart">

<a onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button addToCart"><span><?php echo $button_cart; ?></span></a></div

и этот нужно добавить:

<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 class="cart">

<input type="text" value="1" class="item-<?php echo $product['product_id']; ?>" /> <a onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button addToCart"><span><?php echo $button_cart; ?></span></a></div>

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Есть решение попроще...

catalog/controller/product/category.php - после - 'product_id' => $result['product_id'],

Вставляем - 'minimum' => $result['minimum'],

catalog/view/theme/default/template/product/category.tpl - в <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>

  • +1 2
Надіслати
Поділитися на інших сайтах

А вот как кнопки + [ 1 ] - прикрутить на страницу списка категорий? сам ломал голову, получилось, но кнопки работают только значение количества не зависимо от нажатой кнопки изменяется только для первого товара(((

Надіслати
Поділитися на інших сайтах

  • 3 weeks later...
  • 3 months later...
  • 3 weeks later...

Есть решение попроще...

 

и правильнее <?php echo $product['minimum']; ?> позволяет добавлять правильное минимальное количество для данного товара, установленное в карточке товара, если оно отлично от единицы.

проверено на 1.5.4.1

Надіслати
Поділитися на інших сайтах


  • 5 months later...

А вот как кнопки + [ 1 ] - прикрутить на страницу списка категорий? сам ломал голову, получилось, но кнопки работают только значение количества не зависимо от нажатой кнопки изменяется только для первого товара(((

подскажите пожалуйста, как приделать кнопочки + и -

  • +1 1
Надіслати
Поділитися на інших сайтах


  • 8 months later...
  • 3 weeks later...
  • 6 months later...

Подскажите пожалуйста, как сделать тоже самое для версии opencart 2.0 (возможность выбора количества товара из списка товаров)

Отличие в одном, в 2 функция называется cart.add, никаких изменений в common.js

В моем варианте еще изменен поиск input, в оригинале он ориентируется на класс, у меня на ИД.

<input type="text" name="quantity" value="1" size="2" id="input-quantity-<?php echo $product['product_id']; ?>" class="form-control" /><button type="button" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>

<script type="text/javascript"><!--
function addQtyToCart(product_id) {  
var qty = $('#input-quantity-' + product_id).val(); 
 if ((parseFloat(qty) != parseInt(qty)) || isNaN(qty)) {
qty = 1;  
}  cart.add(product_id, qty);
}
--></script>

А если нужен выбор, из выпадающего списка, тогда используйте:

<select>
<option value="Sony">Sony</option>
<option value="Toshiba">Toshiba</option>
<option value="Acer">Acer</option>
<option value="Asus">Asus</option>
</select>
Надіслати
Поділитися на інших сайтах


подскажите пожалуйста, как приделать кнопочки + и -

 

Я этот вопрос решил так:

<button type="button" data-toggle="tooltip" onclick="EditMaxQuant('<?php echo $product['product_id']; ?>');" >+</button>
<input type="text" name="quantity" value="1" size="2" id="input-quantity-<?php echo $product['product_id']; ?>" />
<button type="button" data-toggle="tooltip" onclick="EditMinQuant('<?php echo $product['product_id']; ?>');" >-</button>
				
<script type="text/javascript"><!--
function EditMinQuant(product_id) {
 var qty = $('#input-quantity-' + product_id).val();
  if ((parseFloat(qty) != parseInt(qty)) || isNaN(qty)) {
	qty = 1;
  }else{
	  qty=Number(qty)-1;
  }
  $('#input-quantity-' + product_id).val(qty);
}
-->
</script>
<script type="text/javascript"><!--
function EditMaxQuant(product_id) {
  var qty = $('#input-quantity-' + product_id).val();
  if ((parseFloat(qty) != parseInt(qty)) || isNaN(qty)) {
	qty = 1;
  }else{
	  qty=Number(qty)+1;
  }
  $('#input-quantity-' + product_id).val(qty);
}
-->
</script>

Со стилями сами разберетесь, у меня кнопочки и поле ввода кол-ва зависит от вида отображения (сетка/список)

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA.PNG

  • +1 1
Надіслати
Поділитися на інших сайтах


  • 4 months later...
  • 5 months later...
  • 1 month later...

а как перенести этот "модуль" в 2.1.0.2 ?
 
Точнее: не пойму, как прикрутить выпадающий список, как в теме выше:

<select>
<option value="Sony">Sony</option>
<option value="Toshiba">Toshiba</option>
<option value="Acer">Acer</option>
<option value="Asus">Asus</option>
</select>

У меня так:

<button type="button" class="btn btn-default" onclick="cart.add('<?php echo $product['product_id']; ?>');"><?php echo $button_cart; ?></button>
Змінено користувачем Dimansh
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.