Перейти к содержанию
Alewka1994

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

Рекомендуемые сообщения

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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 или в контроллере сразу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
13 минут назад, Tom сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$min_price = $this->model_catalog_product->getMinPriceFromCategory($category_info['category_id']);

так к примеру

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 часов назад, Tom сказал:

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

так к примеру

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$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 присылает(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, Tom сказал:

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

не помогло(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Tom сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
13 часов назад, Tom сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 22.05.2018 в 08:29, Tom сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 22.05.2018 в 08:29, Tom сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Bistore
      Добрый день помогите выбрать добить модуль личных количественных скидок на каждого пользователя отдельно в ограниченном виде!
      Получается
      1) Можно сравнить количество скидок на товар и количество купленных товаров пользователей(только авторизованные будут) сравнивая по айди товара и купленого товара минусовать количество скидок от купленного товара и выводить есть ли скидочный товар или же нет( или какое количество осталось).
       
      2) Я вывел sql  запросом уже в пользователе количество скидочных товаров минус количество купленного товара по айди ----- и теперь нужно по айди сравнить купленный товар и товар связать и по полю kolichestvo которое получилось в пользователе смотреть Kol=>0 ? или меньше и тд  
      Как лучше сделать?
      Как связать купленный товар(этим пользователем)  и товар на сайте?
      В файле который добавил в этот вопрос есть код корзины где осуществил все (jan - это количество скидок на товар) 
      cart.php
    • От AndreyRr
      Генерируется много обращений к MySQL - превышаем лимиты на хостинге, и хостер ругается.
       
      С чем может быть связано, и можете посоветует кто-то толькового программиста кто может решить? (сам магазин небольшой, 300 товаров)
    • От 100napb
      Здравствуйте, уважаемые. Пропустим ту часть, в которой обсуждался бы вопрос откуда у Вас могут появиться всякие няшные смайлики. Скажу лишь, что лепить их направо и налево со всяких гаджетов любит каждый, в том числе, оставляя отзывы у Вас на сайте.
       
      Так вот, задался вопросом, как сохранить и не исказить все эти дорогие эмоции. Потому что ОпернКарт с ними не дружит. Для себя нашел следующие решение:
      Прежде всего, текст со смайлами или без них хранится в БД. Для этого данные должны быть в хипстерской кодировке utf8mb4. И сама БД ее должна поддерживать. Не у всех стоят последние версии Mysql, где все это работает не просто из коробки, а по умолчанию. Что бы перевести таблицу на кодировку с эмодзи выполним ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; где table_name заменяем на нужные таблицы. Можно и всю базу так заальтерить, но я чет очканул. Мне хватило таблиц oc_review и oc_comment (привет Markimax). Обновлять версию мускуля не обязательно. Если только он настолько старый, что о такой кодировке даже не знает. В настройках коннекта к БД опенкарта так же сменим кодировку: файл /system/library/db/mysqli.php,  $this->connection->set_charset("utf8mb4"); Вроде бы все... ах да, возможно, нужно менять параметры кодировки в файлах mpdo.php и mysql.php. Я менял. Может быть придется еще рестартануть службы. Под спойлером результат.  
      Может кому пригодиться.
      Ну и вопрос для сведущих: можно было как-то проще\грамотнее это сделать?
    • От Molovka
      Ошибки при установке шаблона, загружал шаблон неделю назад всё было хорошо, взял другой шаблон появилась ошибка

    • От progroman
      Скачать/Купить дополнение


      Замена расширения mysql на mysqli
      Данное дополнение затрагивает только класс MySQL, интерфейс и функционал остаются прежними.
      В связи с потенциально слабыми местами в безопасности расширения mysql, разработчики настоятельно рекомендуют использовать PDO или MySQLi при использовании MySQL 4.1.3 или более поздней.
      С официального сайта PHP про расширение mysql (http://php.net/manua...intro.mysql.php):
      Стандартный класс был переписан, т. к. не удалось поставить старое расширение mysql для одной из последних версиий PHP.
      Важно! Перед установкой проверьте, стоит ли расширение mysqli.
      Добавил progroman Добавлено 17.01.2013 Категория Прочее  
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.