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

InGetx

Новичок
  
  • Posts

    3
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

InGetx's Achievements

Newbie

Newbie (1/14)

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

Recent Badges

0

Reputation

  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
×
×
  • 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.