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

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


Alewka1994
 Share

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

 

Link to comment
Share on other sites

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 или в контроллере сразу?

Link to comment
Share on other sites


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

На ваше усмотрение.

А вызов функции получается тоже надо делать? Извините что достаю вас(

Link to comment
Share on other sites


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

  • +1 1
Link to comment
Share on other sites

8 часов назад, Tom сказал:
$min_price = $this->model_catalog_product->getMinPriceFromCategory($category_info['category_id']);

так к примеру

Не находит переменную min price в tpl файле((

Link to comment
Share on other sites


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

 

Link to comment
Share on other sites

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 присылает(

Link to comment
Share on other sites


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

 

Link to comment
Share on other sites


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

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

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

Link to comment
Share on other sites


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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites


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

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

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

Link to comment
Share on other sites


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

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

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

Link to comment
Share on other sites


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

Всем привет.

 

Это решение подойдет для OcStore 2.1.0.2.1?

Хочу сделать вывод цены от и до в автотексте к описанию категории.

Link to comment
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
 Share

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