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

Вывод минимальной цены товара из категории


Alewka1994

Recommended Posts

public function getMinPriceFromCategory($category_id) {

						 $sql = "SELECT p.price, ps.price AS price_special FROM ".DB_PREFIX."product p
						  LEFT JOIN ".DB_PREFIX."product_to_category AS ptc ON ptc.product_id = p.product_id	LEFT JOIN ".DB_PREFIX."product_special ps ON (p.product_id=ps.product_id)  
						  WHERE ptc.category_id = ".(int)$category_id." OR ptc.category_id IN (SELECT path_id FROM ".DB_PREFIX."category_path WHERE category_id = ".(int)$category_id." AND level = 0)            
						  AND p.price > 0
						  AND p.quantity > 1
						  AND p.date_available <= NOW() ORDER BY p.price DESC LIMIT 0,1";
						 $query = $this->db->query($sql);
						 $product_price = $query->row;
						 if(isset($product_price['price_special']) && $product_price['price_special'] > 0){
						 	$min_price = $product_price['price_special'];
						 } elseif(isset($product_price['price'])) {
						 	$min_price = $product_price['price'];
						 } else {
						 	$min_price = 0;
						 }
				 	
						 return $min_price;
					}

 

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

10 минут назад, Tom сказал:

public function getMinPriceFromCategory($category_id) {

						 $sql = "SELECT p.price, ps.price AS price_special FROM ".DB_PREFIX."product p
						  LEFT JOIN ".DB_PREFIX."product_to_category AS ptc ON ptc.product_id = p.product_id	LEFT JOIN ".DB_PREFIX."product_special ps ON (p.product_id=ps.product_id)  
						  WHERE ptc.category_id = ".(int)$category_id." OR ptc.category_id IN (SELECT path_id FROM ".DB_PREFIX."category_path WHERE category_id = ".(int)$category_id." AND level = 0)            
						  AND p.price > 0
						  AND p.quantity > 1
						  AND p.date_available <= NOW() ORDER BY p.price DESC LIMIT 0,1";
						 $query = $this->db->query($sql);
						 $product_price = $query->row;
						 if(isset($product_price['price_special']) && $product_price['price_special'] > 0){
						 	$min_price = $product_price['price_special'];
						 } elseif(isset($product_price['price'])) {
						 	$min_price = $product_price['price'];
						 } else {
						 	$min_price = 0;
						 }
				 	
						 return $min_price;
					}

 

Это в .../model/..../product.php или в контроллере сразу?

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


$min_price = $this->model_catalog_product->getMinPriceFromCategory($category_info['category_id']);

так к примеру

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

Решение на скорую руку. Всегда можно предложить более оптимальный вариант. В данном случае я лишь показал, где именно стоят за сараем лопаты.

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

$data['categories'][] = array(
        .........
                        'min_price'        => '<span class="from">' .$this->language->get('text_from') . '</span> '.$this->currency->format($this->tax->calculate($min_price, 0, $this->config->get('config_tax')), $this->session->data['currency']),

      ........
$_['text_from']      = 'Цена от:';
<?php echo $category['min_price']; ?>

 

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

27 минут назад, Tom сказал:

$data['categories'][] = array(
        .........
                        'min_price'        => '<span class="from">' .$this->language->get('text_from') . '</span> '.$this->currency->format($this->tax->calculate($min_price, 0, $this->config->get('config_tax')), $this->session->data['currency']),

      ........

$_['text_from']      = 'Цена от:';

<?php echo $category['min_price']; ?>

 

category.php

 

	$data['categories'][] = array(
					'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
					 'min_price'        => '<span class="from">От</span> '.$this->currency->format($this->tax->calculate($min_price, 0, $this->config->get('config_tax')), $this->session->data['currency']),
					'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)
				);

model/..../product.php 

<?php
class ModelCatalogProduct extends Model {
    
    public function getMinPriceFromCategory($category_id) {

						 $sql = "SELECT p.price, ps.price AS price_special FROM ".DB_PREFIX."product p
						  LEFT JOIN ".DB_PREFIX."product_to_category AS ptc ON ptc.product_id = p.product_id	LEFT JOIN ".DB_PREFIX."product_special ps ON (p.product_id=ps.product_id)  
						  WHERE ptc.category_id = ".(int)$category_id." OR ptc.category_id IN (SELECT path_id FROM ".DB_PREFIX."category_path WHERE category_id = ".(int)$category_id." AND level = 0)            
						  AND p.price > 0
						  AND p.quantity > 1
						  AND p.date_available <= NOW() ORDER BY p.price DESC LIMIT 0,1";
						 $query = $this->db->query($sql);
						 $product_price = $query->row;
						 if(isset($product_price['price_special']) && $product_price['price_special'] > 0){
						 	$min_price = $product_price['price_special'];
						 } elseif(isset($product_price['price'])) {
						 	$min_price = $product_price['price'];
						 } else {
						 	$min_price = 0;
						 }
				 	
						 return $min_price;
					}
     ....

category.tpl


                      <?php foreach ($categories as $category) { ?>
           <?php echo $category['min_price']; ?>
           <?php } ?>
     

и высвечивает все равно

Notice: Undefined variable: min_price in /home/..../system/storage/modification/catalog/controller/product/category.php on line 240Notice: Undefined variable: min_price in /home/...../system/storage/modification/catalog/controller/product/category.php on line 240Notice: Undefined variable: min_price in /home/...../system/storage/modification/catalog/controller/product/category.php on line 240

а вместо цены 0 присылает(

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


55 минут назад, Alewka1994 сказал:

не помогло(

 

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

Обновить кеш модификаторов как минимум.

А все нашел ошибку. 

Только теперь вот что

Warning: Missing argument 2 for Cart\Currency::format(), called in /home/..../system/storage/modification/catalog/model/catalog/product.php on line 612 and defined in /home/luminarc/new.tarelki.by/system/library/cart/currency.php on line 24Notice: Undefined variable: currency in /home/..../system/library/cart/currency.php on line 25Notice: Undefined index: in /home/luminarc/new.tarelki.by/system/library/cart/currency.php on line 25Notice: Undefined variable: currency in /home/.../system/library/cart/currency.php on line 26Notice: Undefined index: in /home/..../system/library/cart/currency.php on line 26Notice: Undefined variable: currency in /home/..../system/library/cart/currency.php on line 27Notice: Undefined index: in /home/..../system/library/cart/currency.php on line 27Notice: Undefined variable: currency in /home/...../system/library/cart/currency.php on line 30Notice: Undefined index: in /home/..../system/library/cart/currency.php on line 30

 

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


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

Моё решение для 2.3

Спасибо огромное, все разобрался. Кэши почистил, поудалял ненужное зарботало) А чтобы максимальную цену взять надо desc заменить на asc?)

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


Всё в ваших руках. Как новичку  напомню, что основное правило форума, нашёл сам решение, кто то подсказал, получилось как нужно - будь добр описать для потомков что , где и как именно. Я лишь подсказал направление к лопатам.

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

13 часов назад, Tom сказал:

Всё в ваших руках. Как новичку  напомню, что основное правило форума, нашёл сам решение, кто то подсказал, получилось как нужно - будь добр описать для потомков что , где и как именно. Я лишь подсказал направление к лопатам.

как только получиться вывести максимальную цену. Опишу все как надо куда закинуть

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


В 22.05.2018 в 08:29, Tom сказал:

Всё в ваших руках. Как новичку  напомню, что основное правило форума, нашёл сам решение, кто то подсказал, получилось как нужно - будь добр описать для потомков что , где и как именно. Я лишь подсказал направление к лопатам.

Еще такая проблема. В подкатегориях не выводит. Как быть?(

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


В 22.05.2018 в 08:29, Tom сказал:

Всё в ваших руках. Как новичку  напомню, что основное правило форума, нашёл сам решение, кто то подсказал, получилось как нужно - будь добр описать для потомков что , где и как именно. Я лишь подсказал направление к лопатам.

И она почему то берёт минимальное и максимальное цену от первой подкатегории. И присваивает ее всем подкатегориям данной категории и главной категории соответственно

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


  • 1 year later...
  • 1 month later...

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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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