Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Вывод цены товара - от и до


Recommended Posts

Всем привет! Есть категория товара - духи - в карточке товара опции - выбор объема. Например 50мл - 1000 руб, 100 мл - 1500 руб. Как вывести в карточке товара и в категориях цену: 1000 - 1500 руб? Спасибо!

Link to post
Share on other sites

Зависит от организации цен в опциях.

 

Но в любом случае - дополнительным запросом в БД (цеплять его лучше в методе "getProduct($product_id)" модели товара отдельным методом).

Link to post
Share on other sites
2 часа назад, wlll сказал:

Всем привет! Есть категория товара - духи - в карточке товара опции - выбор объема. Например 50мл - 1000 руб, 100 мл - 1500 руб. Как вывести в карточке товара и в категориях цену: 1000 - 1500 руб? Спасибо!

 

Link to post
Share on other sites

whiteblue, при здесь вобще ваш модуль?)

 

в catalog/model/catalog/product.php

public function getProductPrices($product_id) {
    $prices = array();
	    
    $query = $this->db->query("SELECT COUNT(product_id) AS total_option, MIN(price) AS min_price, MAX(price) AS max_price FROM  " . DB_PREFIX . "product_option_value WHERE product_id = ". (int) $product_id);
       
    if($query->row && $query->row['total_option'] > 1) {
			 $prices = array(
				  'min_price' => $query->row['min_price'],
				  'max_price' => $query->row['max_price']
			 );
    }

    return $prices;
}

в catalog/product/category.php находим

$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));

заменяем на:

$prices = $this->model_catalog_product->getProductPrices($result['product_id']);
if($prices) {
  $min_price = $this->currency->format($prices['min_price']);
  $max_price = $this->currency->format($prices['max_price']);
  $price = 'от'. $min_price .'до'. $max_price;
} else {
  $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
}

 

Edited by megrel
  • +1 1
Link to post
Share on other sites

В последнем блоке кода опечатка

$prices = ...
if($price_min_max) {

?

 

Да и применимо исключительно в случаях, когда основная цена товара 0 (ибо не учитываются ни она, ни префиксы цен опций).

Link to post
Share on other sites

Точно, поправил опечатку.

 

Цитата

Да и применимо исключительно в случаях, когда основная цена товара 0 (ибо не учитываются ни она, ни префиксы цен опций).

Да, но что-то мне подсказывает, что тут именно тот случай.

Edited by megrel
Link to post
Share on other sites

После изменения в catalog/model/catalog/product.php - сайт выдает 500 ошибку :(

Link to post
Share on other sites

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

После изменения в catalog/model/catalog/product.php - сайт выдает 500 ошибку

Разобрался. 

Я так понял, что catalog/product/category.php  - это /catalog/controller/product/category.php

В этом файле такая строка: 

$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);

После замены - в карточке товара все остается как было, а в категориях выдает ошибку: Notice: Undefined property: Proxy::getProductPrices in catalog/controller/product/category.php on line 190

Строка 190: 

$prices = $this->model_catalog_product->getProductPrices($result['product_id']);

Спасибо!

Edited by wlll
Link to post
Share on other sites

У меня тоже при создании новой функции в файле \model\catalog\product.php выдает ошибку Notice: Undefined property: Proxy:: 

при попытке вызвать эту функцию из контроллера (в контроллере модель подключена $this->load->model('catalog/product');). Подкажите решение плиз.

движок Opencart 3.0.2.0

Спасибо!

Edited by Alaverdens
Link to post
Share on other sites

Попробуйте так:

$prices = $this->model_catalog_product->getProductPrices($result['product_id']);
if($prices) {
  $min_price = $this->currency->format($prices['min_price'], $this->session->data['currency']);
  $max_price = $this->currency->format($prices['max_price'], $this->session->data['currency']);
  $price = 'от'. $min_price .'до'. $max_price;
} else {
  $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
}

 

Link to post
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
  • 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.