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

Переделываю сортировку. Запрос в Mysql


Recommended Posts

Может кто знающий поможет советом. Ситуация такая - делаю сортировку по скидкам, и по хитам (пока только по скидкам!) то есть если выбрано сортировка скидки то показывало товары только со скидкой. Вывод я сделал но товары выводятся все которые есть в магазине со скидками а надо из той категории где проводиться сортировка. Я знаю что нужно вот этот код

if (!empty($data['filter_category_id'])) {
			if (!empty($data['filter_sub_category'])) {
				$sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'";
			} else {
				$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
			}

			if (!empty($data['filter_filter'])) {
				$implode = array();

				$filters = explode(',', $data['filter_filter']);

				foreach ($filters as $filter_id) {
					$implode[] = (int)$filter_id;
				}

				$sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")";
			}
		}

добавить но пока все безуспешно.

прикрепил файл контроллера категории и модель catalog/product

category-controller.php

product-model.php

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


может кому нужно вот решение

добавить в функцию

public function getProducts($data = array()) {

перед строкой

$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

добавить это

if (isset($data['sort']) && ($data['sort']=='special_percent')) {
			$sql .= " INNER JOIN oc_product_special ps ON (ps.product_id = p.product_id)";
		}
		if (isset($data['sort']) && ($data['sort']=='hit')) {
			$sql .= " INNER JOIN oc_product_bestsell bs ON (bs.product_id = p.product_id) AND bs.bestsell = '1'";
		}

и в функцию

public function getTotalProducts($data = array()) {

перед строкой

$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

добавить тоже самое

if (isset($data['sort']) && ($data['sort']=='special_percent')) {
			$sql .= " INNER JOIN oc_product_special ps ON (ps.product_id = p.product_id)";
		}
		if (isset($data['sort']) && ($data['sort']=='hit')) {
			$sql .= " INNER JOIN oc_product_bestsell bs ON (bs.product_id = p.product_id) AND bs.bestsell = '1'";
		}

 

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


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

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

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

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

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

Вхід

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

Вхід зараз

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

Important Information

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