Jump to content
покупайте без комиссии
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

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


Recommended Posts

Ребят как вывести минимальную цену из товаров в каждой из категорий. Типо товары от какой то цены. Не js только

Link to post
Share on other sites

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 post
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 post
Share on other sites

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

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

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

Link to post
Share on other sites

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

так к примеру

Link to post
Share on other sites

DESC надо убрать, ну и будет немного странно если скидочная цена 

Link to post
Share on other sites

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

  • +1 1
Link to post
Share on other sites
8 часов назад, Tom сказал:

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

так к примеру

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

Link to post
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 post
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 post
Share on other sites

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

Link to post
Share on other sites
5 минут назад, Tom сказал:

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

не помогло(

Link to post
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 post
Share on other sites

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

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites
13 часов назад, Tom сказал:

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

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

  • 1 year later...

Помогите у меня почему-то запрос выводит значение 0. Хотя в условии 

AND p.price > 0
Link to post
Share on other sites

  • 1 month later...

Всем привет.

 

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

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

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
  • Similar Content

    • By MaJIon
      Здравствуйте, можно ли как-то соединить эти запросы таким образом, чтобы через post передавать нужные параметры и эти запрос как-то фильтровать в зависимости от клика по кнопке + или - 

       
      public function updateLike($product_id) { $this->db->query("SELECT * FROM " . DB_PREFIX . "product SET like_count = (like_count - 1) WHERE product_id = '" . (int)$product_id . "'"); } public function updateLikeMinus($product_id) { $this->db->query("UPDATE " . DB_PREFIX . "product SET like_count = (like_count - 1) WHERE product_id = '" . (int)$product_id . "'"); } public function updateLikePlus($product_id) { $this->db->query("UPDATE " . DB_PREFIX . "product SET like_count = (like_count + 1) WHERE product_id = '" . (int)$product_id . "'"); }  
    • By Krasulin
      Добрый день, кто может качественно оптимизировать MySQL, хостер пишет что медленная загрузка сайта может бить из-за БД. Так ли это ?
      "заметили на сервере в процессах постоянно работающий процесс mysql, который грузит на 100+% постоянно, возможно время отклика каким то образом связано с работой базы данных"
    • By sv2109
      Скачать/Купить дополнение


      SQL менеджер SQL Buddy
      SQL Buddy это простой sql менеджер. Намного проще но и намного легче phpMyAdmin-a
      С помощью него можно:
      создавать базы данных
      создавать, редактировать, удалять таблицы
      изменять структуру таблиц
      изменять данные в таблицах
      выполнять sql запросы
      делать импорт и экспорт таблиц
      итд

      + мульти язычный интерфейс (поддерживает 47 языков включая русский и украинский)
      Перед использованием настоятельно рекомендую сделать копию базы данных!
      Работает на :
      - ocstore 1.5.4.1
      - opencart 1.5.5.1
      но скорее всего будет работать на всех 1.5.x версиях движка
      Возможно вас заинтересуют другие модули автора
      Добавил sv2109 Добавлено 27.07.2013 Категория Обмен данными Системные требования Метод активации Ioncube Loader OpenCart ocStore OpenCart.Pro, ocShop Обращение к серверу разработчика Старая цена  
    • By sano4kin
      Приветствую!
       
      Господа, с недавних пор начала расти нагрузка на БД. Хостер даже сайт забанил, потому что за 2 часа нагрузка вырастала до 150000 сек, и так каждый день...
      В логах вот такая ошибка. Кто знает что она означает?

    • By svmax
      Наш стек: (OPENCART 1.5), Memcached, MуSQL. Интернет-магазин интегрирован с 1С и облачной CRM, платежной системой.
      часть внутреннего функционала написано JavaScript фреймворке Vue.js 
      Требования к кандидату:
      - Знание php mysql html css javascrip
      - Знание архитектуры MVC
      - Опыт работы с опенкарт ocStore Версия 1.5.5.1.2
      - Умение работать с системой контроля версий Git (github.com)
      Оплата 500р в час. 
      Задачи составляются в подробное ТЗ, выполнение контролируется тимлидом. 
      Работа не разовая, задачи на доработки появляются регулярно.
      примерная загрузка 50-100 часов в месяц.
      Обязанности:
      Развитие интернет-магазина,
      Интеграции с внешними сервисами,
      Правка или доработка шаблона,
      Работы по ускорению магазина,
      Написание нового функционала и расширение функций движка.
      Дописывания новой бизнес логики.

      - Текущие задачи требующие выполнения.
      * Доработать внутренний скрипт управления товарами (php).
      * Исправить ошибки php кода из журнала логирования ошибок
      * Перевести движок сайта с php 5.6 => php 7.3
      * Настроить кеширование запросов к базе данных на тяжелых страницах
      * Поработать со скоростью загрузки страниц сайта.
       
      При откликах желательно прикреплять портфолио и описание о себе.
  • 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.