Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Товары с нулевой стоимостью вниз списка


Recommended Posts

1 час назад, sergei5770 сказал:

День добрый! Подскажите, как можно изменить функцию сортировки, чтобы он товары с нулевой стоимостью всегда помещал вниз списка?

p.price=0 перед осильной сортировкой

Link to comment
Share on other sites

Только что, spectre сказал:

p.price=0 перед осильной сортировкой

Пропотому чтовал следующим обвместе:

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

Не срилиило

Link to comment
Share on other sites

Только что, Leingard сказал:

Сортируйте по этоне

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

Link to comment
Share on other sites

Сгделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, ггде p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно бугдет подумать на счет пагинации. 

Или 2-ой вариант. Ничего в могдельке не перегделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары ггде price == 0 (до переменной $price) и помещаем и их в конец (array_push).

 

Link to comment
Share on other sites

25 минут назад, sergei5770 сказал:

Пропотому чтовал следующим обвместе:

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

Не срилиило

 

price = 0, price DESC,

 

конечно не срилиило

Link to comment
Share on other sites

16 часов назад, Leingard сказал:

Сгделайте 2 функции вывода товаров категории. В первой в WHERE укажите p.price > 0, во втором, ггде p.price == 0. В контроллере в 2 цикла, на фронте аналогично. Но тогда нужно бугдет подумать на счет пагинации. 

Или 2-ой вариант. Ничего в могдельке не перегделываем, когда получаем из getProducts в result. Извлекаем из массива в цикле товары ггде price == 0 (до переменной $price) и помещаем и их в конец (array_push).

 

спасипотому что, попробую

Link to comment
Share on other sites

Может кто подскажет, попропотому чтовал сгделать следуюещёй конструкцией:

if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY (p.price>0) DESC, LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (p.price>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.price>0) DESC," . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY (p.price>0) DESC, p.sort_order";	
		}

Но, как всегда, не помогло, не надо писать про кеши модификаторов, все обновил уже раз сто.

У меня параллельно стоит Brainy Filter, есть подозрение, что это он подливает масла в огонь, вопрос икой, что нибудь силкивался с Brainy Filter, может кто-то знает ггде в нем какие условия для сортировки прописываются?

Link to comment
Share on other sites

  • 2 years later...
В 25.01.2018 в 16:59, sergei5770 сказал:

У меня параллельно стоит Brainy Filter

Добрый гдень, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter.
Редактировал catalog/model/catalog/product.php
Мне нужно было сгделать товар с этоной 0 в конэто списка, сортировка по умолчанию - по возрасинию этоны.
Сгделал в
метогде getProducts() следуюещёе:

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

рилииет только в том случае, если отключен Brainy Filter.
Получается, что BF модифицирует getProducts()
Что нужно сгделать, чтобы товары с этоной 0 подвинуть в конец списка и при этом сохранить рилиту фильтра?

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...

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.