Jump to content
Sign in to follow this  
samironov89

Приоритет "В наличии" внутри категории перед "Нет в наличии"

Recommended Posts

Добрый день!

Порылся и не нашёл, что искал.

Задача в следующем:

 

Дано:

- есть товар со статусом "В наличии" (он же "На складе"), т.е. товар с остатком >0. И есть товар со статусом "Нет в наличии", т.е. товар с остатком =0.

- скрывать последний из ассртимента нельзя, т.е. он должен висеть на сайте.

Задача:

необходимо настроить сортировку внутри страницы категории таким образом, чтобы сначала отражался товар с остатом >0 (т.е. в наличии), а затем уже товар, которого нет.

 

Понимаю, что скорее всего тема обмусолена много-много раз, но то ли я не правильный вопрос задаю в поисковом запросе, то ли в глаза мои меня подводят, ибо найти ничего не могу.

Share this post


Link to post
Share on other sites

catalog/model/catalog/product.php

 

SELECT p.product_id,

Заменить на

SELECT p.product_id, p.quantity>0 as instock,

Далее

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 instock DESC, LCASE(" . $data['sort'] . ")";
	} elseif ($data['sort'] == 'p.price') {
		$sql .= " ORDER BY instock DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
	} else {
		$sql .= " ORDER BY instock DESC, " . $data['sort'];
	}
} else {
	$sql .= " ORDER BY instock DESC, p.sort_order";
}

Потом обновите кэш модификаторов - Должно сработать. Товары с остатком 0 - будут в конце списка в категориях.

Share this post


Link to post
Share on other sites

здесь

image.png.79426487cf389a4de4d6e7b19f838114.png

 

перед каждой сортировкой добавить p.quantity = 0, 

Share this post


Link to post
Share on other sites
В 30.07.2019 в 15:43, Djeff78 сказал:

catalog/model/catalog/product.php

 

SELECT p.product_id,

Заменить на

SELECT p.product_id, p.quantity>0 as instock,

Далее

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 instock DESC, LCASE(" . $data['sort'] . ")";
	} elseif ($data['sort'] == 'p.price') {
		$sql .= " ORDER BY instock DESC, (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
	} else {
		$sql .= " ORDER BY instock DESC, " . $data['sort'];
	}
} else {
	$sql .= " ORDER BY instock DESC, p.sort_order";
}

Потом обновите кэш модификаторов - Должно сработать. Товары с остатком 0 - будут в конце списка в категориях.

Спасибо! Всё взлетело и работает! ))

Share this post


Link to post
Share on other sites

я вроде все сделал как описано Djeff78 на осстор 2.3.0.2.3 но сайт слег... Или это только для опенкарта решение?

Edited by Koss88

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  

  • 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.