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

InGetx

Новачок
  
  • Публікації

    3
  • З нами

  • Відвідування

Відвідувачі профілю

Блок відвідувачів профілю відключений і не буде доступний широкому іншим користувачам

InGetx's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Week One Done
  • One Month Later
  • One Year In
  • Conversation Starter

Recent Badges

0

Репутація

  1. <file name="catalog/view/theme/*/template/product/product.tpl"> <operation> <search position="replace"><![CDATA[ <li><a href="#tab-description" data-toggle="tab"><?php echo $tab_description; ?></a></li> ]]></search> <add><![CDATA[ <?php if ($description) { ?> <li><a href="#tab-description" data-toggle="tab"><?php echo $tab_description; ?></a></li> <?php } ?> ]]></add> </operation> </file> Вот модификация, чтобы скрыть пустую вкладку описание для VQmod - OCShop 1.5.6.4.1 Предварительно переключена активная вкладка на tab_specification. Может кому пригодиться. По сути тут важны лишь 2 строчки с условием, код движка может быть любым, главное найти "#tab-description" в "catalog/view/theme/*/template/product/product.tpl"
  2. Добрый день! Нужен модуль, который будет автоматически пересчитывать цену на странице товара (а не только в корзине), в зависимости от кол-ва товара и скидки от кол-ва или/и выбранной опции, и указывать сразу конечную цену с учётом скидки от указанного кол-ва и выбранных опций. Т.е. в карточке товара указано например: 1шт. - 1000₽ (исходная цена) 5шт. или более: 800₽ 10шт. или более: 700₽ И когда вводишь в карточке товара допустим 11шт. то сразу выводилась бы общая цена в карточке товара - 7700руб. Скидки при этом указываются в админке как обычно в карточке товара в пункте (скидка) и меняются от кол-ва товара. Движок - OCSHOP 1.5.6.4.1 Посоветуйте пожалуйста готовое решение или где можно поправить ручками код? Сейчас в принципе ближайший из подходящего и работающего это бесплатный модуль - Price change with option https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=28277 Но этот модуль умеет только пересчитывать цену в зависимости от кол-ва товара или выбранной опции, а скидки при этом не учитываются. Как можно допилить возможность обновления цены с учётом скидок, желательно в VQmod. Код используемого модуля: <?xml version="1.0" encoding="UTF-8"?> <modification> <id>Price Option Change</id> <version>1.0.x</version> <vqmver required="true">2.4.0</vqmver> <author>Pinnacle Web Solutions</author> <file name="catalog/controller/product/product.php"> <operation> <search position="before"><![CDATA[ public function upload() {]]></search> <add><![CDATA[ public function price_option_change() { $json = array(); $options_makeup = 0; if (isset($this->request->post['product_id'])) { $product_id = (int)$this->request->post['product_id']; } else { $product_id = 0; } if (isset($this->request->post['quantity'])) { $quantity = (int)$this->request->post['quantity']; } else { $quantity = 1; } $this->language->load('product/product'); $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); // Product Information if ($product_info) { if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $data['price'] = $product_info['price']; } else { $data['price'] = false; } if ((float)$product_info['special']) { $data['special'] = $product_info['special']; } else { $data['special'] = false; } if (isset($this->request->post['option']) && $this->request->post['option']) { foreach ($this->model_catalog_product->getProductOptions($product_id) as $option) { if($option['type'] == 'select' || $option['type'] == 'radio' || $option['type'] == 'checkbox' || $option['type'] == 'image'){ foreach ($option['option_value'] as $option_value) { //If options checkbox if(isset($this->request->post['option'][$option['product_option_id']]) && is_array($this->request->post['option'][$option['product_option_id']])) { array_filter($this->request->post['option'][$option['product_option_id']]); foreach($this->request->post['option'][$option['product_option_id']] as $checked_option) { if ($checked_option == $option_value['product_option_value_id']) { 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 = $option_value['price']; } else { $price = false; } if ($price) { if ($option_value['price_prefix'] === '+') { $options_makeup = $options_makeup + (float)$price; } else { $options_makeup = $options_makeup - (float)$price; } } } } } } //If options not checkbox if (isset($this->request->post['option'][$option['product_option_id']]) && $this->request->post['option'][$option['product_option_id']] == $option_value['product_option_value_id']) { 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 = $option_value['price']; } else { $price = false; } if ($price) { if ($option_value['price_prefix'] === '+') { $options_makeup = $options_makeup + (float)$price; } else { $options_makeup = $options_makeup - (float)$price; } } } } } } unset($price); } } if ($data['price']) { $json['new_price']['price'] = $this->currency->format($this->tax->calculate((($data['price'] + $options_makeup) * $quantity ), $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $json['new_price']['price'] = false; } if ($data['special']) { $json['new_price']['special'] = $this->currency->format($this->tax->calculate((($data['special'] + $options_makeup ) * $quantity), $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $json['new_price']['special'] = false; } if ($this->config->get('config_tax')) { $json['new_price']['tax'] = $this->currency->format(((float)$product_info['special'] ? ($product_info['special'] + $options_makeup): ($product_info['price'] + $options_makeup)) ); } else { $json['new_price']['tax'] = false; } $json['success'] = true; } else { $json['success'] = false; } echo json_encode($json); exit; } ]] </add> </operation> </file> <file name="catalog/view/theme/*/template/product/product.tpl"> <operation> <search position="replace"><![CDATA[ <?php echo $price; ?>]]></search> <add><![CDATA[<span class="price-old"><?php echo $price; ?></span>]]></add> </operation> <operation> <search position="before"><![CDATA[<?php echo $footer; ?>]]></search> <add><![CDATA[<script type="text/javascript"> function PriceOptionChange(){ $.ajax({ type: 'POST', url: 'index.php?route=product/product/price_option_change', data: $('.product-info input[type=\'text\'], .product-info input[type=\'hidden\'], .product-info input[type=\'radio\']:checked, .product-info input[type=\'checkbox\']:checked, .product-info select, .product-info textarea'), dataType: 'json', success: function(json) { if (json.success) { $('.product-info .price-old').html(json.new_price.price); $('.product-info .price-new').html(json.new_price.special); $('.product-info .price-tax').html("<?php echo $text_tax; ?> " + json.new_price.tax); } } }); } $('.product-info input[type=\'text\'], .product-info input[type=\'hidden\'], .product-info input[type=\'radio\'], .product-info input[type=\'checkbox\'], .product-info select, .product-info textarea').on('change', function() { PriceOptionChange(); }); $('.product-info input[name=\'quantity\']').on('keyup', function() { PriceOptionChange(); }); </script> ]]></add> </operation> </file> </modification> price_change_ajax.xml
×
×
  • Створити...

Important Information

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