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

Recommended Posts

Добрый день, вывел на страницу категории выбор количества товаров для добавления в корзину, все работает хорошо. Но в тех товарах, где есть опции, не добавляет конечно же. Вывел опции в категории, но все равно не передает значение опции, что бы сразу можно было купить со страницы категории.

Подскажите, что упустил?

Кнопка купить, сейчас выглядит так

              <div class="button-group">
			      <div class="btn-quantity">
                <input type="text" name="quantity" value="<?php echo $product['minimum']; ?>" size="2" id="input-quantity" class="form-control<?php echo $product['product_id']; ?>" />
                <span class="qty-plus"><i class="fa fa-plus"></i></span>
                <span class="qty-minus"><i class="fa fa-minus"></i></span>
              </div>
                <button type="button" id="button-cart" onclick="cart.add('<?php echo $product['product_id']; ?>',$('.form-control<?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>
                <?php if ($butik_fastorder_category) { ?>
                <button type="button" class="btn-fastordercat" onclick="fastorder('<?php echo $product['product_id']; ?>');" data-toggle="tooltip" title="<?php echo $entry_fastorder_title; ?>"><i class="fa fa-paper-plane"></i></button>
                <?php } ?>
              </div>

Сайт halal-pizza.moscow 

Опенкарт 2.3.0.2

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


в js ничего не добавлял. в контроллер вот так сделал 

$options = array();

			foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) {
				$product_option_value_data = array();

				foreach ($option['product_option_value'] as $option_value) {
					if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {
						if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) {
							$price1 = $this->currency->format($this->tax->calculate($option_value['price'], $result['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']);
						} else {
							$price1 = false;
						}

						$product_option_value_data[] = array(
							'product_option_value_id' => $option_value['product_option_value_id'],
							'option_value_id'         => $option_value['option_value_id'],
							'name'                    => $option_value['name'],
							'image'                   => $this->model_tool_image->resize($option_value['image'], 50, 50),
							'price'                   => $price1,
							'price_prefix'            => $option_value['price_prefix']
						);
					}
				}

				$options[] = array(
					'product_option_id'    => $option['product_option_id'],
					'product_option_value' => $product_option_value_data,
					'option_id'            => $option['option_id'],
					'name'                 => $option['name'],
					'type'                 => $option['type'],
					'value'                => $option['value'],
					'required'             => $option['required']
				);
			}

и в 

$data['products'][] = array(

добавил 

'options'      => $options,

Я что то упустил еще?

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


Все по этой же теме...

Сделал вывод опции и в корзину попадает, но теперь нет возможности выбрать количество товара. 

Код js такой добавил 

function addToCartOpt(product_id){
	$.ajax({
		url: 'index.php?route=checkout/cart/add',
		type: 'post',
		data: $('.opt_'+product_id+' input[type=\'hidden\'], .opt_'+product_id+' select'),
		dataType: 'json',
		success: function(json) {
		$('.success, .warning, .attention, information, .error').remove();
		if (json['error']) {
		if (json['error']['option']) {
		for (i in json['error']['option']) {
		$('#option-' + i).after('<span class="error">' + json['error']['option'][i] + '</span>');
		}
		}
		}
		if (json['success']) {
		$('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
		$('.success').fadeIn('slow');
		$('#cart-total').html(json['total']);
		$('html, body').animate({ scrollTop: 0 }, 'slow');
		}
		}
	});
}

в контроллер 

$options = array();

foreach ($this->model_catalog_product->getProductOptions($result['product_id']) as $option) { 
	if ($option['type'] == 'select') { 
		$option_value_data = array();
		
		foreach ($option['product_option_value'] as $option_value) {
					if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {
						if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) {
							$price1 = $this->currency->format($this->tax->calculate($option_value['price'], $result['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']);
						} else {
							$price1 = false;
						}
				
				$option_value_data[] = array(
					'product_option_value_id' => $option_value['product_option_value_id'],
					'option_value_id'         => $option_value['option_value_id'],
					'name'                    => $option_value['name'],
					'image'                   => $this->model_tool_image->resize($option_value['image'], 50, 50),
					'price'                   => $price1,
					'price_prefix'            => $option_value['price_prefix']
				);
			}
		}
		
		$options[] = array(
			'product_option_id' => $option['product_option_id'],
			'option_id'         => $option['option_id'],
			'name'              => $option['name'],
			'type'              => $option['type'],
			'option_value'      => $option_value_data,
			'required'          => $option['required']
		);					
	}
}

и сама кнопка 

<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" id="button-cart" value="<?php echo $button_cart; ?>" onclick="addToCartOpt('<?php echo $product['product_id']; ?>', $('#quantity<?php echo $product['product_id']; ?>').val());" class="button"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span> </button>

Подскажите, как реализовать возможность выбора количества, я так понимаю, что дело в js, а именно  здесь 

data: $('.opt_'+product_id+' input[type=\'hidden\'], .opt_'+product_id+' select'),

У кого есть какие мысли?

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


  • 2 months later...

Я нашел вот такое видео Добавление опций на страницу категорий Opencart 2.3.0.2. Часть 2 - но у меня не стандартный шаблон по-этому не совсем подошло, просто не добавляет в корзину. Может тебе подойдет.

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


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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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