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

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


Recommended Posts

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

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


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

 

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

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

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

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

 

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

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')));
}

 

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


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

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

?

 

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

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

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

 

Цитата

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

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

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


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']);

Спасибо!

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


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

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

движок Opencart 3.0.2.0

Спасибо!

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


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

$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']);
}

 

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


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

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

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

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

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

Вхід

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

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

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

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

Important Information

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