Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


fitdamir
 Поделиться

Рекомендованные сообщения

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

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

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 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.