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

Вывести вес из опции в карту товара


Recommended Posts

Как вывести вес из опции в карте товара? В гугле ответа на свой вопрос не нашла вообще.

 

aO5UXAx.png

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


Значения опций в БД, если можно так выразиться, не имеют числовых значений, так что вариантов не особо. Разово можно сделать каким-нибудь модулем экспорта/импорта или пакетным редактором, для обновления на лету нужно писать модуль, для такой специфической задачи не встречал.

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

Имеется ввиду, что вес товара, меняется от веса опции

getProductOptions возвращает
 

					'weight'                  => $product_option_value['weight'],
					'weight_prefix'           => $product_option_value['weight_prefix']

Далее в контроллере

 

						$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'                   => $price,
							'price_prefix'            => $option_value['price_prefix']

достать вес и префикс
И вывести в шаблон

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

@chukcha Не мог придумать для другой задачи решение, спасибо, что потыкали мордочкой)

Подойдет ли ТС - неизвестно пока, так как вывод во фронт одно, а увеличение веса товара для доставок там и прочего - иное.

Но мне было полезно.

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

В контроллере:

				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']) {
							$price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']);
						} else {
							$price = false;
						}
						
						if ((($this->config->get('config_customer_weight') && $this->customer->isLogged()) || !$this->config->get('config_customer_weight')) && (float)$option_value['weight']) {
						    $weight = $this->weight->format($option_value['weight'], $this->config->get('config_weight_class_id'));	
						} else {
							$weight = 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'                   => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 50, 50) : '',
							'price'                   => $price,
							'price_prefix'            => $option_value['price_prefix'],
							'weight'                   => $weight,
							'weight_prefix'            => $option_value['weight_prefix']							
						);
					}
				}

В шаблоне вывод на примере опций radio:

            <?php if ($option['type'] == 'radio') { ?>
            <div class="form-group<?php echo ($option['required'] ? ' required' : ''); ?>">
              <label class="control-label"><?php echo $option['name']; ?></label>
              <div id="input-option<?php echo $option['product_option_id']; ?>">
                <?php foreach ($option['product_option_value'] as $option_value) { ?>
                <div class="radio">
                  <label>
                    <input type="radio" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option_value['product_option_value_id']; ?>" />
                    <?php if ($option_value['image']) { ?>
                    <img src="<?php echo $option_value['image']; ?>" alt="<?php echo $option_value['name'] . ($option_value['price'] ? ' ' . $option_value['price_prefix'] . $option_value['price'] : ''); ?>" class="img-thumbnail" /> 
                    <?php } ?>                    
                    <?php echo $option_value['name']; ?>
                    <?php if ($option_value['price']) { ?>
                    (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)
                    <?php } ?>
                    <?php if ($option_value['weight']) { ?>
                    (<?php echo $option_value['weight_prefix']; ?><?php echo $option_value['weight']; ?>)
                    <?php } ?>					
                  </label>
                </div>
                <?php } ?>
              </div>
            </div>
            <?php } ?>

 

 

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

24 минуты назад, GreenDragon сказал:

В контроллере:


				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']) {
							$price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']);
						} else {
							$price = false;
						}
						
						if ((($this->config->get('config_customer_weight') && $this->customer->isLogged()) || !$this->config->get('config_customer_weight'))) {
						    $weight = $this->weight->format($option_value['weight'], $this->config->get('config_weight_class_id'));	
						} else {
							$weight = 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'                   => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 50, 50) : '',
							'price'                   => $price,
							'price_prefix'            => $option_value['price_prefix'],
							'weight'                   => $weight,
							'weight_prefix'            => $option_value['weight_prefix']							
						);
					}
				}

В шаблоне вывод на примере опций radio:


            <?php if ($option['type'] == 'radio') { ?>
            <div class="form-group<?php echo ($option['required'] ? ' required' : ''); ?>">
              <label class="control-label"><?php echo $option['name']; ?></label>
              <div id="input-option<?php echo $option['product_option_id']; ?>">
                <?php foreach ($option['product_option_value'] as $option_value) { ?>
                <div class="radio">
                  <label>
                    <input type="radio" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option_value['product_option_value_id']; ?>" />
                    <?php if ($option_value['image']) { ?>
                    <img src="<?php echo $option_value['image']; ?>" alt="<?php echo $option_value['name'] . ($option_value['price'] ? ' ' . $option_value['price_prefix'] . $option_value['price'] : ''); ?>" class="img-thumbnail" /> 
                    <?php } ?>                    
                    <?php echo $option_value['name']; ?>
                    <?php if ($option_value['price']) { ?>
                    (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)
                    <?php } ?>
                    <?php if ($option_value['weight']) { ?>
                    (<?php echo $option_value['weight_prefix']; ?><?php echo $option_value['weight']; ?>)
                    <?php } ?>					
                  </label>
                </div>
                <?php } ?>
              </div>
            </div>
            <?php } ?>

 

 

Спасибо большое, осталось разборатся где слово кг на граммы заменить :)

 

В система - настройки - локализация

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


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

@chukcha Не мог придумать для другой задачи решение, спасибо, что потыкали мордочкой)

Подойдет ли ТС - неизвестно пока, так как вывод во фронт одно, а увеличение веса товара для доставок там и прочего - иное.

Но мне было полезно.

это нужно для веса золота, колец, сережек

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


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

это нужно для веса золота, колец, сережек

в таком случае вполне годный вариант, раз не влияет на доставки например

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

  • 2 years later...
В 14.08.2019 в 13:54, GreenDragon сказал:

В контроллере:


				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']) {
							$price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']);
						} else {
							$price = false;
						}
						
						if ((($this->config->get('config_customer_weight') && $this->customer->isLogged()) || !$this->config->get('config_customer_weight')) && (float)$option_value['weight']) {
						    $weight = $this->weight->format($option_value['weight'], $this->config->get('config_weight_class_id'));	
						} else {
							$weight = 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'                   => $option_value['image'] ? $this->model_tool_image->resize($option_value['image'], 50, 50) : '',
							'price'                   => $price,
							'price_prefix'            => $option_value['price_prefix'],
							'weight'                   => $weight,
							'weight_prefix'            => $option_value['weight_prefix']							
						);
					}
				}

В шаблоне вывод на примере опций radio:


            <?php if ($option['type'] == 'radio') { ?>
            <div class="form-group<?php echo ($option['required'] ? ' required' : ''); ?>">
              <label class="control-label"><?php echo $option['name']; ?></label>
              <div id="input-option<?php echo $option['product_option_id']; ?>">
                <?php foreach ($option['product_option_value'] as $option_value) { ?>
                <div class="radio">
                  <label>
                    <input type="radio" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option_value['product_option_value_id']; ?>" />
                    <?php if ($option_value['image']) { ?>
                    <img src="<?php echo $option_value['image']; ?>" alt="<?php echo $option_value['name'] . ($option_value['price'] ? ' ' . $option_value['price_prefix'] . $option_value['price'] : ''); ?>" class="img-thumbnail" /> 
                    <?php } ?>                    
                    <?php echo $option_value['name']; ?>
                    <?php if ($option_value['price']) { ?>
                    (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)
                    <?php } ?>
                    <?php if ($option_value['weight']) { ?>
                    (<?php echo $option_value['weight_prefix']; ?><?php echo $option_value['weight']; ?>)
                    <?php } ?>					
                  </label>
                </div>
                <?php } ?>
              </div>
            </div>
            <?php } ?>

 

 

Подскажите, этот код просто добавить в файлы или что-то нужно убрать и потом этот добавить? У меня вылезла ошибка о неизвестной переменной weight

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


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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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