Jump to content
Sign in to follow this  
SAY

[Решено] Сортировка товаров по наличию

Recommended Posts

Ничего не изменилось. ocStore-2.1.0.2.1

Share this post


Link to post
Share on other sites
2 minutes ago, Sultunar said:

Ничего не изменилось. ocStore-2.1.0.2.1

 

Кэш, куки чистили?

Модификаторы обновляли?

Что сделали и что не получилось?

Share this post


Link to post
Share on other sites
В 15.04.2016 в 20:21, kiborg сказал:

Сам нашел решение, всё очень просто

кому интересно:

  Скрыть контент

делаем так как говорил Neurotechnic

в catalog/model/catalog/product.php меняем



if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY " . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY p.sort_order";	
		}

на



if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY (p.quantity>0) DESC, LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (p.quantity>0) DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY (p.quantity>0) DESC," . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY (p.quantity>0) DESC, p.sort_order";	
		}

дальше идем catalog/controller/product/category.php

меняем



if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'p.sort_order';
		}

		if (isset($this->request->get['order'])) {
			$order = $this->request->get['order'];
		} else {
			$order = 'ASC';
		}

на



	if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'p.date_added';
		}

		if (isset($this->request->get['order'])) {
			$order = $this->request->get['order'];
		} else {
			$order = 'DESC';
		} 

там же только ниже ищем



$data['sorts'][] = array(
				'text'  => $this->language->get('text_default'),
				'value' => 'p.sort_order-ASC',
				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)
			);

и меняем на



	$data['sorts'][] = array(
				'text'  => $this->language->get('text_default'),
				'value' => 'p.date_added-DESC',
				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.date_added&order=DESC' . $url)
			);

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

работает на ocStore 2.1.0.2.1

К сожалению не работает... (( ocStore-2.1.0.2.1

Share this post


Link to post
Share on other sites
17 минут назад, unknown сказал:

 

Кэш, куки чистили?

Модификаторы обновляли?

Что сделали и что не получилось?

кэш и куки чистил... а что за модификаторы?

Share this post


Link to post
Share on other sites

Блин. в менеджере дополнений нажал "обновить" и сайт слетел... ошибка: Parse error: syntax error, unexpected 'else' (T_ELSE), expecting function (T_FUNCTION) in /home/kosco/veloparts.com.ua/www/system/storage/modification/catalog/model/catalog/product.php on line 221

Share this post


Link to post
Share on other sites
21 minutes ago, Sultunar said:

Блин. в менеджере дополнений нажал "обновить" и сайт слетел... ошибка: Parse error: syntax error, unexpected 'else' (T_ELSE), expecting function (T_FUNCTION) in /home/kosco/veloparts.com.ua/www/system/storage/modification/catalog/model/catalog/product.php on line 221

 

Либо лишний else оставили, либо } больше чем нужно

Посмотрите, путь указан к файлу

Quote

/catalog/model/catalog/product.php on line 221

 

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

Edited by unknown

Share this post


Link to post
Share on other sites
6 часов назад, unknown сказал:

 

Либо лишний else оставили, либо } больше чем нужно

Посмотрите, путь указан к файлу

 

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

короче не получилось восстановить. пришлось снести весь сайт и заново закачать бэкап! мин 40 ушло на заливку бэкапа.

 

сейчас страшно снова что-то делать. так что же такое "модификаторы"?

Share this post


Link to post
Share on other sites
14 minutes ago, Sultunar said:

короче не получилось восстановить. пришлось снести весь сайт и заново закачать бэкап!

 

Так редактировали же только 2 файла

Можете просто копии сделать и попробовать еще

 

15 minutes ago, Sultunar said:

так что же такое "модификаторы"?

 

это оно

Quote

Блин. в менеджере дополнений нажал "обновить"

 

Share this post


Link to post
Share on other sites
On 16.04.2017 at 6:13 PM, Sultunar said:

К сожалению не работает... (( ocStore-2.1.0.2.1

 

Так на чистом окстор 2.1.0.2.1 делал. Всё работает

Share this post


Link to post
Share on other sites

Как оказалось все работает не отлично. Теперь когда захожу в любую подкатегорию товаров и в стандартной опции жму сортировку по цене (возрастанию или убыванию) выскакивает ошибка.

Ниже скриншот.

 

 

ошибка.png

Share this post


Link to post
Share on other sites
В 16.01.2015 в 23:19, Marianna сказал:

наконец рабочий вариант, который подошел и для фильтра про

Сделал это и ошибка пропала :)

Share this post


Link to post
Share on other sites

Подскажите, есть рабочий вариант для версии 2.3.0.2 ?

Share this post


Link to post
Share on other sites
В 15.04.2016 в 20:21, kiborg сказал:

Сам нашел решение, всё очень просто

кому интересно:

  Скрыть контент

делаем так как говорил Neurotechnic

в catalog/model/catalog/product.php меняем



if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY " . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY p.sort_order";	
		}

на



if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY (p.quantity>0) DESC, LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (p.quantity>0) DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY (p.quantity>0) DESC," . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY (p.quantity>0) DESC, p.sort_order";	
		}

дальше идем catalog/controller/product/category.php

меняем



if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'p.sort_order';
		}

		if (isset($this->request->get['order'])) {
			$order = $this->request->get['order'];
		} else {
			$order = 'ASC';
		}

на



	if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'p.date_added';
		}

		if (isset($this->request->get['order'])) {
			$order = $this->request->get['order'];
		} else {
			$order = 'DESC';
		} 

там же только ниже ищем



$data['sorts'][] = array(
				'text'  => $this->language->get('text_default'),
				'value' => 'p.sort_order-ASC',
				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)
			);

и меняем на



	$data['sorts'][] = array(
				'text'  => $this->language->get('text_default'),
				'value' => 'p.date_added-DESC',
				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.date_added&order=DESC' . $url)
			);

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

работает на ocStore 2.1.0.2.1

 

Версия ocStore 2.3.0.2.3, полет нормальный, спасибо! 

  • +1 3

Share this post


Link to post
Share on other sites
В 25.12.2017 в 20:28, cornerit сказал:

 

Версия ocStore 2.3.0.2.3, полет нормальный, спасибо! 

Что то у меня ничего не поменялось-((

Share this post


Link to post
Share on other sites
12 часов назад, Lenar сказал:

Что то у меня ничего не поменялось-((

После изменения кода в менеджере дополнений нажал Обновить и в Система - инструменты - OC Team, нажал обновить.

https://cornerit.ru/komplektuyushie/ohlazhdayushie-sistemy/ventilyatory-titan/

 

Share this post


Link to post
Share on other sites

delete

Edited by krashman

Share this post


Link to post
Share on other sites

Добрый день прошу помочь дополнить описаный здесь способ (кстати он рабочий сделал на ocStore 2.1.0.2)

Мне нужно добавить к фильтрации по умолчанию возможность вывода товаров, которые имеют акцию в начале списка, либо сделать сортировку с выбором данного параметра

Share this post


Link to post
Share on other sites

Решение от cornerit тестировал на opencart 2.1.0.2 заработало, огромное спасибо.

Share this post


Link to post
Share on other sites
В 03.09.2018 в 20:12, Igorewa сказал:

Решение от cornerit тестировал на opencart 2.1.0.2 заработало, огромное спасибо.

На opencart 3.0 решение тоже работает!

Share this post


Link to post
Share on other sites

Прошу прощение, а что за решение от cornerit, 3 страницы прочел, но решения не увидел.

 

Share this post


Link to post
Share on other sites

Привет. Есть лм такое решение для версии 3.0.2.0?

Share this post


Link to post
Share on other sites
В 25.12.2017 в 20:28, cornerit сказал:

 

Версия ocStore 2.3.0.2.3, полет нормальный, спасибо! 

производители - работает

категории-работает

OcFilter - работает

поиск-работает!

2.1.0.2.1

Share this post


Link to post
Share on other sites

Здравствуйте, а кто нибудь нашел решение для сортировки именно по статусу товара? Товары которые "под заказ" отображаются вперемешку с теми которых нет в наличии, тк.в примерах выше сортировка идёт только по количеству.

Кто нибудь может подсказать как ввести условие сортировки по статусам?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By legioner26
      555.00 руб
      Скачать/Купить дополнение


      Сортировка товаров в заказе по категориям с учетом остатков
      Разработан модификатор с сортировкой товаров в заказе по категориям в админ панели, в пользовательской части, в письме заказчику и письме администратора магазина.
      Данный функционал в разы упрощает работу менеджеров в подборе номенклатуры для выставления счетов.
      Так же в админке в заказах добавлена колонка производителя, фото товара и учет остатков по складу с возможностью сохранять выбор.
      Установка:
      Устанавливаете модификатор через "Установка расширений", далее в модификаторах чистим кешь и обновляем.
       
      Добавил legioner26 Добавлено 27.12.2017 Категория Покупки, оформление заказа, корзина Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет Старая цена 900  
    • By legioner26
      Разработан модификатор с сортировкой товаров в заказе по категориям в админ панели, в пользовательской части, в письме заказчику и письме администратора магазина.
      Данный функционал в разы упрощает работу менеджеров в подборе номенклатуры для выставления счетов.
      Так же в админке в заказах добавлена колонка производителя, фото товара и учет остатков по складу с возможностью сохранять выбор.
      Установка:
      Устанавливаете модификатор через "Установка расширений", далее в модификаторах чистим кешь и обновляем.
       
    • By Friden
      На главной странице есть вывод категорий модулем "Вывод категорий". Однако, теперь все категории товаров объединены в две большие группы и в результате на главной выводятся только эти две большие группы. Есть ли какая-то возможность перенастроить плагин? А то в меню модулей только включение/выключение и всё. 
       
      OCStore 2.3
    • By Otvet
      300.00 руб
      Скачать/Купить дополнение


      ↑↓ SORTS + : Настройка сортировок, скрытие "не в наличии" (или в конец списка)
      Модуль позволяет настраивать сортировку товаров в категориях/производителях/поиске/акциях, а так же добавляет новые варианты сортировки товаров.
      Так же имеется возможность управлять кол-вом товара на страницу и скрывать товары не в наличии или убирать в конец списка
       
      Opencart 3.0 поддерживает с версии модуля 4.0
       
       
      Доступна версии 4.1 beta с поддержкой в т.ч. и Opencart 3.0 (по запросу)   ссылка
       
       
      Функции:
      настройка вывода пунктов сортировки в магазине выбор сортировки по умолчанию добавление сортировки по Новизне и Остатку (+ По популярности в v4) возможность выводить сначала товары в наличии выбор вариантов сортировки по наличию (статус или нулевой остаток) возможность скрыть товары не в наличии настроить список чисел вывода кол-ва товара  
       
       
      Установка 2.3:
       
      Установка 2.0-2.1:
      Зайдите в Дополнения - Установка Выберите файл *.ocmod.zip (распаковывать не нужно) После установка перейдите в Дополнения - Модификации и обновите кеш Перейдите в Дополнения - Модули и активируйте модуль SORTS+ Выберите нужные настройки и Сохраните При возникновении проблем, установите это http://www.opencart.com/index.php?route=extension/extension/info&extension_id=18892  
      Установка 1.5:
      Распакуйте архив в корень сайта Очистите папку vqcache Перейдите в Дополнения - Модули и активируйте модуль SORTS+ Выберите нужные настройки и Сохраните  
      Установка 3.0-3.1:
      Получить дистрибутив Зайдите в Дополнения - Установка Выберите файл *.ocmod.zip (распаковывать не нужно) После установка перейдите в Дополнения - Модификации и обновите кеш Перейдите в Дополнения - Модули и активируйте модуль SORTS+ Выберите нужные настройки и Сохраните Добавил Otvet Добавлено 04.10.2015 Категория Фильтры Системные требования Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Нет Старая цена 0  
    • By Otvet
      Модуль позволяет настраивать сортировку товаров в категориях/производителях/поиске/акциях, а так же добавляет новые варианты сортировки товаров.
      Так же имеется возможность управлять кол-вом товара на страницу и скрывать товары не в наличии или убирать в конец списка
       
      Opencart 3.0 поддерживает с версии модуля 4.0
       
       
      Доступна версии 4.1 beta с поддержкой в т.ч. и Opencart 3.0 (по запросу)   ссылка
       
       
      Функции:
      настройка вывода пунктов сортировки в магазине выбор сортировки по умолчанию добавление сортировки по Новизне и Остатку (+ По популярности в v4) возможность выводить сначала товары в наличии выбор вариантов сортировки по наличию (статус или нулевой остаток) возможность скрыть товары не в наличии настроить список чисел вывода кол-ва товара  
       
       
      Установка 2.3:
       
      Установка 2.0-2.1:
      Зайдите в Дополнения - Установка Выберите файл *.ocmod.zip (распаковывать не нужно) После установка перейдите в Дополнения - Модификации и обновите кеш Перейдите в Дополнения - Модули и активируйте модуль SORTS+ Выберите нужные настройки и Сохраните При возникновении проблем, установите это http://www.opencart.com/index.php?route=extension/extension/info&extension_id=18892  
      Установка 1.5:
      Распакуйте архив в корень сайта Очистите папку vqcache Перейдите в Дополнения - Модули и активируйте модуль SORTS+ Выберите нужные настройки и Сохраните  
      Установка 3.0-3.1:
      Получить дистрибутив Зайдите в Дополнения - Установка Выберите файл *.ocmod.zip (распаковывать не нужно) После установка перейдите в Дополнения - Модификации и обновите кеш Перейдите в Дополнения - Модули и активируйте модуль SORTS+ Выберите нужные настройки и Сохраните
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.