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

[Решено] Добавление выбранной опции в оповещение при заказе товара


Recommended Posts

Здравствуйте, хочу добавить на свой сайт функцию. При добавление товара с опцией в оповещении(что товар добавился в корзину) показывалась выбранная опция. 

Подскажите, что поправить в файле :

controller\checkout\cart.php

$json['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));

Чтобы при выборе опции 2-3 года, было примерно так

 

Снимок.PNG

Снимок2.PNG

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


4 часа назад, fitdamir сказал:

а как? не получается(

тут, выбранные опции

if (isset($this->request->post['option'])) {
	$option = array_filter($this->request->post['option']);
} else {
	$option = array();
}

а тут,  опции товара с наименованием

$product_options = $this->model_catalog_product->getProductOptions($this->request->post['product_id']);

перебираем опции товара, с проверкой выбрана или нет.

если выбрана добавляем название в переменную.

добавляем переменную после  $product_info['name'] в json['success']

примерно как-то так.

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

1 час назад, fanatic сказал:

перебираем опции товара, с проверкой выбрана или нет.

если выбрана добавляем название в переменную.

добавляем переменную после  $product_info['name'] в json['success']

примерно как-то так.

Спасибо, вас примерно понял.

$json['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'].$product_option['name'], $this->url->link('checkout/cart'));

Сделал так, в итоге получаю не совсем то, что хочу. Передается только название самой опции, а не значение этой опции.

help:geek:

 

32.JPG

33.JPG

 

Понимаю, что там должно быть не $product_option['name']

а что то типа $product_option['value'], но как его прикрутить

 

и вот что я имею в файле на тему опций и значений

foreach ($product['option'] as $option) {
					if ($option['type'] != 'file') {
						$value = $option['value'];
					} else {
						$upload_info = $this->model_tool_upload->getUploadByCode($option['value']);

						if ($upload_info) {
							$value = $upload_info['name'];
						} else {
							$value = '';
						}
					}

					$option_data[] = array(
						'name'  => $option['name'],
						'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)
					);
				}

 

Змінено користувачем fitdamir
мысли
Надіслати
Поділитися на інших сайтах


12 часов назад, fitdamir сказал:

Передается только название самой опции, а не значение этой опции.

ну да, я и думал что нужно название

если нужно значение, как вариант

		$option_data = array();	
		foreach ($product_options as $product_option) {
			    if ($product_option['required'] && empty($option[$product_option['product_option_id']])) {
				    $json['error']['option'][$product_option['product_option_id']] = sprintf($this->language->get('error_required'), $product_option['name']);
			    }
			    if(!empty($option[$product_option['product_option_id']])){
				foreach($product_option as $k => $p_o){
				    if($k == 'product_option_value'){
					foreach($p_o as $v_p_o){
					    if(is_array($option[$product_option['product_option_id']])){
						foreach($option[$product_option['product_option_id']] as $val){
						    if($val == $v_p_o['product_option_value_id']){
							$option_data[] = $v_p_o['name'];
						    }
						}
					    }else{
						if($option[$product_option['product_option_id']] == $v_p_o['product_option_value_id']){
						     $option_data[] = $v_p_o['name'];
						}
					    }
					}
				    }
				}
			    }
			}
$json['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'] . '(' . implode(',',$option_data) . ')', $this->url->link('checkout/cart'));

 

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

5 часов назад, fanatic сказал:

ну да, я и думал что нужно название

если нужно значение, как вариант


		$option_data = array();	
		foreach ($product_options as $product_option) {
			    if ($product_option['required'] && empty($option[$product_option['product_option_id']])) {
				    $json['error']['option'][$product_option['product_option_id']] = sprintf($this->language->get('error_required'), $product_option['name']);
			    }
			    if(!empty($option[$product_option['product_option_id']])){
				foreach($product_option as $k => $p_o){
				    if($k == 'product_option_value'){
					foreach($p_o as $v_p_o){
					    if(is_array($option[$product_option['product_option_id']])){
						foreach($option[$product_option['product_option_id']] as $val){
						    if($val == $v_p_o['product_option_value_id']){
							$option_data[] = $v_p_o['name'];
						    }
						}
					    }else{
						if($option[$product_option['product_option_id']] == $v_p_o['product_option_value_id']){
						     $option_data[] = $v_p_o['name'];
						}
					    }
					}
				    }
				}
			    }
			}

 

Выдает ошибку(

12.JPG.28407e0833a8680e7d0409860a35f240.JPG

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


мое решение для 2.3.  на дефолте прекрасно работает. (проверено) 

option.thumb.jpg.c66edeea411fc86046bb8cc8271586e0.jpg

 

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

1 минуту назад, fanatic сказал:

мое решение для 2.3.  на дефолте прекрасно работает. (проверено) 

option.thumb.jpg.c66edeea411fc86046bb8cc8271586e0.jpg

 

Я же правильно понимаю, просто заменить ваш код на этот?

				$option_data = array();

				foreach ($product['option'] as $option) {
					if ($option['type'] != 'file') {
						$value = $option['value'];
					} else {
						$upload_info = $this->model_tool_upload->getUploadByCode($option['value']);

						if ($upload_info) {
							$value = $upload_info['name'];
						} else {
							$value = '';
						}
					}

					$option_data[] = array(
						'name'  => $option['name'],
						'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)
					);
				}

 

 

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


8 минут назад, fitdamir сказал:

Я же правильно понимаю, просто заменить ваш код на этот?

нет.   смотрите метод add()  после

$product_options = $this->model_catalog_product->getProductOptions($this->request->post['product_id']);

 

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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