Jump to content

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


Recommended Posts

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

 

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

 

$filter['in_stock'] = 1;
 

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

Link to post
Share on other sites

попробуйте продублировать в функцию 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';

Link to post
Share on other sites

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

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

 

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

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

Link to post
Share on other sites

попробуйте продублировать в функцию 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';

 

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

Link to post
Share on other sites

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

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

 

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

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

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

Link to post
Share on other sites

Так, и все таки у меня работает: мы же выбираем 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';
Link to post
Share on other sites
  • 1 month later...
  • 1 year later...

 

Так, и все таки у меня работает: мы же выбираем 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';

 

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

 

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

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

Loading...
×
×
  • Create New...