tom0rrow Posted December 15, 2013 Report Share Posted December 15, 2013 Ребята, подскажите пожалуйста, как сделать так, чтобы товары у которых цена 0, выводились в конце при сортировке по возростанию. Сейчас же добавил: $filter['in_stock'] = 1; Но работает он херово, навигация постраничная выводится к примеру страниц 40, а так как товаров с 0-1 ценой нету теперь, то на 20 просто заканчивается вывод, и попадаешь на страницу "товаров нету". Quote Link to post Share on other sites
pavel_wis Posted December 15, 2013 Report Share Posted December 15, 2013 попробуйте продублировать в функцию 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'; Quote Link to post Share on other sites
pavel_wis Posted December 15, 2013 Report Share Posted December 15, 2013 немного поторопилсяТут запрос больше для наличия ну для price, я думаю, Вам не составит труда заменить Quote Link to post Share on other sites
tom0rrow Posted December 15, 2013 Author Report Share Posted December 15, 2013 немного поторопилсяТут запрос больше для наличия ну для price, я думаю, Вам не составит труда заменить не совсем понял что и на что менять, можно более подробно, что от куда взять и куда вставить Quote Link to post Share on other sites
tom0rrow Posted December 15, 2013 Author Report Share Posted December 15, 2013 попробуйте продублировать в функцию 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'; то что вы здесь написали в конце, это сортировка по убыванию, по цене... не годится Quote Link to post Share on other sites
pavel_wis Posted December 15, 2013 Report Share Posted December 15, 2013 то что вы здесь написали в конце, это сортировка по убыванию, по цене... не годитсяя ж ведь ниже указал: немного поторопилсяТут запрос больше для наличия ну для price, я думаю, Вам не составит труда заменить Quote Link to post Share on other sites
tom0rrow Posted December 15, 2013 Author Report Share Posted December 15, 2013 я ж ведь ниже указал: немного поторопилсяТут запрос больше для наличия ну для price, я думаю, Вам не составит труда заменить Так вы знаете как решить ? Quote Link to post Share on other sites
pavel_wis Posted December 15, 2013 Report Share Posted December 15, 2013 Так, и все таки у меня работает: мы же выбираем 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'; Quote Link to post Share on other sites
Julia-sk Posted January 22, 2014 Report Share Posted January 22, 2014 А как написать, если без учета наличия товара (есть позиции товара под заказ)? Quote Link to post Share on other sites
simpler Posted February 26, 2015 Report Share Posted February 26, 2015 Так, и все таки у меня работает: мы же выбираем 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'; Попробовал этот фрагмент, получается что идет сортировка по цене от большей к меньшей, ну и естественно товары с нулевой ценой оказываются в конце списка, но такой вариант не совсем устраивает, т.к. обычно редко кто-либо сортирует товары начиная с самой дорогой цены. А может есть решение такое - сортировка идет по возврастанию цены, а товары с нулевой ценой попадают в конец списка? Посоветуйте, всю голову сломал... Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.