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

Модуль цена + наличие


georg

Recommended Posts

Добрый день, уважаемые форумчане!

Ищу подсказку, может, кто сталкивался. Благодарен за любую помощь.

Версия opencart 1.5.1.3

Мне необходимо в моем магазине в категориях реализовать фильтр по цене от___ - до ____ и по наличию______ товара. Я хочу для этой цели попробовать вот такой скрипт

https://github.com/s...by-stock-status

Он идет под vqmod. Я установил vqmod, vqmod manager и через него закинул этот скрипт. Но в админке он не отображается. Что я сделал не так?

Пробовал еще напрямую в папку vqmod/xml скрипт закинуть - тоже ничего, хотя делал так, как написано в readme файле.

Вообще единственное ли это решение для реализации в категориях фильтра по цене от___ - до ____ и по наличию______ товара. Я пересматривал вчера весь интернет часа 4, но больше ничего не нашел. Но ведь на такой модуль должен быть спрос, по-моему мнению, разве нет? Кто решал подобную задачу, поделитесь опытом, пожалуйста.

Вот здесь: http://happyland.com.ua/Detskie-avtokresla/Avtokresla-0-13-kg-gruppa-0-plus/ вверху страницы это реализовано. Как можно сделать то же самое у себя?

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


Файл с расширением xml от модуля должен находиться в папке vqmod/xml, с чего вы взяли что от этого мода должно чет появиться в админке

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


по аналогии с другими модулями: думалось мне, я через админку должен установить, чтобы он выводился в категориях.

Если же я не прав, и в админке он появиться не должен - как тогда им управлять?

ЗЫ: простите мое невежество: непростительно мало работал с модулями под vqmod.

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


модуль opencart-product-sorting-by-stock-status на opencart 1.5.1.3. загружаю xml в папку vqmod/xml и не знаю, что делать дальше. нигде этот модуль не отображается. Как дальше с ним работать, как вывести его на страницах категорий, чтобы можно было им пользоваться, подскажите, пожалуйста.

С уважением.

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


введи в адрессной строке http://название магазина/vqmod/install , почисть папку cache

и ещё раз загляни в админку

Но почему то мне кажется что на этот модуль не нужно выставлять права админа...посмотрите не появилась ли строка в админке "каталог - фильтр продуктов"

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


Да вы посмотрите исходник хмл файла, он впринципе в админке не должен появиться, это не модуль а мод как написал выше

<modification>
    <id>OCU Product Sorting by Stock Status</id>
    <version>1.0</version>
    <vqmver>2.1.5</vqmver>
    <author>Eugene Kuligin</author>
    <website>http://www.opencart.ua</website>
    <email>[email protected]</email>
    <!-- catalog:start -->
		    <!-- controller:start -->
		    <!-- bug fix -->
		    <file name="catalog/controller/product/special.php">
			    <operation>
				    <search position="replace">
					    <![CDATA[
						    'href'  => $this->url->link('product/special', 'sort=special&order=DESC' . $url)
					    ]]>
				    </search>
				    <add>
					    <![CDATA[
						    'href'  => $this->url->link('product/special', 'sort=ps.price&order=DESC' . $url)
					    ]]>
				    </add>
			    </operation>
		    </file>
		    <!-- latest module support -->
		    <file name="catalog/controller/module/latest.php">
			    <operation>
				    <search position="before">
					    <![CDATA[
						    'sort'  => 'p.date_added',
					    ]]>
				    </search>
				    <add>
					    <![CDATA[
						    'is_module'  => true,
					    ]]>
				    </add>
			    </operation>
		    </file>
		    <!-- controller:end -->
		    <!-- model:start -->
		    <!-- get product list -->
		    <file name="catalog/model/catalog/product.php">
			    <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";
						    } else if ($data['sort'] == 'p.date_added' && isset($data['is_module'])) {
											    $sql .= " ORDER BY date_added DESC, availability DESC, current_price ASC, " . $data['sort'];
					    ]]>
				    </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>
		    </file>
		    <!-- optional: if using spotonsolutions filter module -->
		    <file name="catalog/model/catalog/browse.php">
			    <operation>
				    <search position="replace">
					    <![CDATA[
						    $sql = "SELECT p.product_id, pd.name, pd.description, pd.meta_description, pd.meta_keyword, p.model, p.sku, p.location, p.quantity, ss.name as stock_status, p.image, p.manufacturer_id, m.name AS manufacturer, p.price, ps.price AS special, pr.points AS reward, p.points, p.tax_class_id, p.date_available, p.weight, wcd.unit AS weight_class, p.length, p.width, p.height, lcd.unit AS length_class, p.subtract, (SELECT AVG(r.rating) FROM " . DB_PREFIX . "review r WHERE p.product_id = r.product_id GROUP BY r.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.minimum, p.sort_order, p.status, p.date_added, p.date_modified, p.viewed FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "') LEFT JOIN " . DB_PREFIX . "manufacturer m ON m.manufacturer_id = p.manufacturer_id LEFT JOIN " . DB_PREFIX . "stock_status ss ON ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "' LEFT JOIN " . DB_PREFIX . "product_reward pr ON pr.product_id = p.product_id AND pr.customer_group_id = '" . (int)$customer_group_id . "' LEFT JOIN " . DB_PREFIX . "weight_class_description wcd ON wcd.weight_class_id = p.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "' LEFT JOIN " . DB_PREFIX . "length_class_description lcd ON lcd.length_class_id = p.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_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), p.price) current_price, p.product_id, pd.name, pd.description, pd.meta_description, pd.meta_keyword, p.model, p.sku, p.location, p.quantity, ss.name as stock_status, p.image, p.manufacturer_id, m.name AS manufacturer, p.price, ps.price AS special, pr.points AS reward, p.points, p.tax_class_id, p.date_available, p.weight, wcd.unit AS weight_class, p.length, p.width, p.height, lcd.unit AS length_class, p.subtract, (SELECT AVG(r.rating) FROM " . DB_PREFIX . "review r WHERE p.product_id = r.product_id GROUP BY r.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.minimum, p.sort_order, p.status, p.date_added, p.date_modified, p.viewed FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "') LEFT JOIN " . DB_PREFIX . "manufacturer m ON m.manufacturer_id = p.manufacturer_id LEFT JOIN " . DB_PREFIX . "stock_status ss ON ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "' LEFT JOIN " . DB_PREFIX . "product_reward pr ON pr.product_id = p.product_id AND pr.customer_group_id = '" . (int)$customer_group_id . "' LEFT JOIN " . DB_PREFIX . "weight_class_description wcd ON wcd.weight_class_id = p.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "' LEFT JOIN " . DB_PREFIX . "length_class_description lcd ON lcd.length_class_id = p.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_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 LEAST(IF(p.price, p.price, 99999), IF(pdis.price, pdis.price, 99999), IF(ps.price, ps.price, 99999))";
					    ]]>
				    </search>
				    <add>
					    <![CDATA[
						    $sql .= " ORDER BY availability DESC, LEAST(IF(p.price, p.price, 99999), IF(pdis.price, pdis.price, 99999), IF(ps.price, ps.price, 99999))";
					    ]]>
				    </add>
			    </operation>
			    <operation>
				    <search position="replace">
					    <![CDATA[
						    $sql .= " ORDER BY " . $sort;
					    ]]>
				    </search>
				    <add>
					    <![CDATA[
						    $sql .= " ORDER BY availability DESC, current_price ASC, " . $sort;
					    ]]>
				    </add>
			    </operation>
			    <operation>
				    <search position="replace">
					    <![CDATA[
						    $sql .= " ORDER BY p.sort_order, pd.name";
					    ]]>
				    </search>
				    <add>
					    <![CDATA[
						    $sql .= " ORDER BY availability DESC, current_price ASC, p.sort_order, pd.name";
					    ]]>
				    </add>
			    </operation>
		    </file>

	    <!-- model:end -->
    <!-- catalog:end -->
</modification>
Где вы видите файлы админки? И еще лучше скопировать коды в файлы чем ставить vqmod
Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

я нашел другое решение: на базе фильтра Filter By Price я разработал фильтр, который отбирает товары по цене и по наличию.

А также, независимо от цены и наличия, по производителю.

выборка производится в текущей подкатегории (удобно для больших магазинов.

Сейчас допишу пост и выложу модуль в Дополнения (неделю уже собираюсь).

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


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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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