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

Модуль сортировки товаров по наличию на складе / цене


Гість

Recommended Posts

Модификация на базе vQmod, позволяющая организовать сортировку товаров подобно реализации на rozetka.ua:

  • Первыми отображаются товары, которые есть на складе;
  • В последнюю очередь отображаются товары, которых нет на складе;
  • Оба варианта группируются по нарастанию цены - от дешевых товаров до более дорогим.
Модуль предусматривает взаимодействие со стандартными фильтрами товаров.

Реализована интеграция с коммерческим модулем "OpenCart Layered Navigation". При включении требуется раскомментировать соответствующий участок карты vQmod.

Скачать последнюю версию с GitHub

Тестирован на OpenCart 1.5.1.3

Модуль распространяется по лицензии GNU General Public License, Version 3

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

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

			  <operation>
					<search position="replace">
						<![CDATA[
$sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product p 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)";
]]>
					</search>
					<add>
						<![CDATA[
$sql = "SELECT if(max(p.quantity) > 0, 1, 0) availability, if(exists(SELECT NULL FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id LIMIT 1), (SELECT ps.price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id ORDER BY ps.priority DESC LIMIT 1), price) current_price, p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product p 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)";
]]>
					</add>
				</operation>
				<operation>
					<search position="replace">
						<![CDATA[
$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
]]>
					</search>
					<add>
						<![CDATA[
$sql .= " ORDER BY availability DESC, LCASE(" . $data['sort'] . ")";
} else if ($data['sort'] == 'p.price' || $data['sort'] == 'ps.price') {
$sql .= " ORDER BY availability DESC, current_price";
]]>
					</add>
				</operation>
				<operation>
					<search position="replace">
						<![CDATA[
$sql .= " ORDER BY " . $data['sort'];
]]>
					</search>
					<add>
						<![CDATA[
$sql .= " ORDER BY availability DESC, current_price ASC, " . $data['sort'];
]]>
					</add>
				</operation>
				<operation>
					<search position="replace">
						<![CDATA[
$sql .= " ORDER BY p.sort_order";
]]>
					</search>
					<add>
						<![CDATA[
$sql .= " ORDER BY availability DESC, current_price ASC, p.sort_order";
]]>
					</add>
				</operation>
				<!-- get special product list -->
				<operation>
					<search position="replace">
						<![CDATA[
$sql = "SELECT DISTINCT ps.product_id, (SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) 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 p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) GROUP BY ps.product_id";
]]>
					</search>
					<add>
						<![CDATA[
$sql = "SELECT DISTINCT if(max(p.quantity) > 0, 1, 0) availability, ps.price AS current_price, ps.product_id, (SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) 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 p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) GROUP BY ps.product_id";
]]>
					</add>
				</operation>

vq2-catalog_model_catalog_product.php

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

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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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