Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


Recommended Posts

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

 

aO5UXAx.png

Link to comment
Share on other sites


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

Link to comment
Share on other sites

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

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
Link to comment
Share on other sites

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

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

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

Edited by PaulKravchenko
Link to comment
Share on other sites

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

				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
Link to comment
Share on other sites

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 } ?>

 

 

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

 

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

Edited by Marianna
Link to comment
Share on other sites


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

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

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

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

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

Link to comment
Share on other sites


  • 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

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.