Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


 Поделиться

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

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

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

 

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


на всякий случай вот два файла готовых а то может я коряво написал

catalog controller product - category.php

catalog model catalog - product.php

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

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

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