Перейти к содержанию

Сортировка товаров по наличию, новый в начало \ нет в наличии в конец


Перейти к решению Решено freeworld,

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

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

 

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

Воспользуйтесь расширенным поиском по форуму opencart Воспользоваться поиском

Ознакомьтесь с руководством по использованию opencart Перейти к Документации

Расширьте возможности интернет-магазина дополнениями Подобрать Модуль

Выберите исполнителя для вашего технического задания Выбрать Исполнителя

  • Решение

Здравствуйте, @Robertnus555!
По пути в 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)
	);

 

.

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...