Перейти к содержанию
Официальный форум поддержки Simpla

Товары с ценой 0 выводить в конце, при сортировке по цене


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

Ребята, подскажите пожалуйста, как сделать так, чтобы товары у которых цена 0, выводились в конце при сортировке по возростанию.

 

Сейчас же добавил:  

 

$filter['in_stock'] = 1;
 

Но работает он херово, навигация постраничная выводится к примеру страниц 40, а так как товаров с 0-1 ценой нету теперь, то на 20 просто заканчивается вывод, и попадаешь на страницу "товаров нету".  

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

попробуйте продублировать в функцию count_products, и с панагией проблем не будет

это по этой проблеме.

 

 

А так, для Вашей задачи необходимо редактировать $filter['sort']

 

попробуйте для position поставить такое:

 

$order = '(SELECT pv.price FROM __variants pv WHERE (pv.stock IS NULL OR pv.stock>0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1) DESC';

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

немного поторопился

Тут запрос больше для наличия:)

 

ну для price, я думаю, Вам не составит труда заменить:)

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

немного поторопился

Тут запрос больше для наличия :)

 

ну для price, я думаю, Вам не составит труда заменить :)

не совсем понял что и на что менять, можно более подробно, что от куда взять и куда вставить

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

попробуйте продублировать в функцию count_products, и с панагией проблем не будет

это по этой проблеме.

 

 

А так, для Вашей задачи необходимо редактировать $filter['sort']

 

попробуйте для position поставить такое:

 

$order = '(SELECT pv.price FROM __variants pv WHERE (pv.stock IS NULL OR pv.stock>0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1) DESC';

 

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

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

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

я ж ведь ниже указал:

 

немного поторопился

Тут запрос больше для наличия :)

ну для price, я думаю, Вам не составит труда заменить :)

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

я ж ведь ниже указал:

 

немного поторопился

Тут запрос больше для наличия :)

ну для price, я думаю, Вам не составит труда заменить :)

Так вы знаете как решить ?

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

Так, и все таки у меня работает: мы же выбираем pv.price (с наличием товара)

пробуйте, Api\products.php

 

найдите такие стоки

case 'position':
 $order = 'p.position DESC';
 
и ордер замените на
$order = '(SELECT pv.price FROM __variants pv WHERE (pv.stock IS NULL OR pv.stock>0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1) DESC';
Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...
  • 1 год спустя...

 

Так, и все таки у меня работает: мы же выбираем pv.price (с наличием товара)

пробуйте, Api\products.php

 

найдите такие стоки

case 'position':
 $order = 'p.position DESC';
 
и ордер замените на
$order = '(SELECT pv.price FROM __variants pv WHERE (pv.stock IS NULL OR pv.stock>0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1) LIMIT 1) DESC';

 

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

 

А может есть решение такое - сортировка идет по возврастанию цены, а товары с нулевой ценой попадают в конец списка? Посоветуйте, всю голову сломал...

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

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

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

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

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

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

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

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

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

Загрузка...
×
×
  • Создать...