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

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


Recommended Posts

В 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

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


17 минут назад, unknown сказал:

 

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

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

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

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

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


Блин. в менеджере дополнений нажал "обновить" и сайт слетел... ошибка: 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

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


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

 

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

Змінено користувачем unknown
Надіслати
Поділитися на інших сайтах


6 часов назад, unknown сказал:

 

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

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

 

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

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

 

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

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


14 minutes ago, Sultunar said:

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

 

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

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

 

15 minutes ago, Sultunar said:

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

 

это оно

Quote

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

 

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


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

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

 

 

ошибка.png

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


  • 4 months later...
  • 2 months later...
В 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 4
Надіслати
Поділитися на інших сайтах


12 часов назад, Lenar сказал:

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

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

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

 

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


  • 1 month later...
  • 3 weeks later...

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

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

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

  • 5 months later...
  • 2 months later...
  • 1 month later...
  • 2 weeks later...
  • 4 weeks later...
В 25.12.2017 в 20:28, cornerit сказал:

 

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

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

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

OcFilter - работает

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

2.1.0.2.1

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


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

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

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


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

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

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

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

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

Вхід

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

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

Important Information

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