tom0rrow Опубликовано 15 декабря, 2013 Жалоба Поделиться Опубликовано 15 декабря, 2013 Ребята, подскажите пожалуйста, как сделать так, чтобы товары у которых цена 0, выводились в конце при сортировке по возростанию. Сейчас же добавил: $filter['in_stock'] = 1; Но работает он херово, навигация постраничная выводится к примеру страниц 40, а так как товаров с 0-1 ценой нету теперь, то на 20 просто заканчивается вывод, и попадаешь на страницу "товаров нету". Цитата Ссылка на сообщение Поделиться на другие сайты
pavel_wis Опубликовано 15 декабря, 2013 Жалоба Поделиться Опубликовано 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'; Цитата Ссылка на сообщение Поделиться на другие сайты
pavel_wis Опубликовано 15 декабря, 2013 Жалоба Поделиться Опубликовано 15 декабря, 2013 немного поторопилсяТут запрос больше для наличия ну для price, я думаю, Вам не составит труда заменить Цитата Ссылка на сообщение Поделиться на другие сайты
tom0rrow Опубликовано 15 декабря, 2013 Автор Жалоба Поделиться Опубликовано 15 декабря, 2013 немного поторопилсяТут запрос больше для наличия ну для price, я думаю, Вам не составит труда заменить не совсем понял что и на что менять, можно более подробно, что от куда взять и куда вставить Цитата Ссылка на сообщение Поделиться на другие сайты
tom0rrow Опубликовано 15 декабря, 2013 Автор Жалоба Поделиться Опубликовано 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'; то что вы здесь написали в конце, это сортировка по убыванию, по цене... не годится Цитата Ссылка на сообщение Поделиться на другие сайты
pavel_wis Опубликовано 15 декабря, 2013 Жалоба Поделиться Опубликовано 15 декабря, 2013 то что вы здесь написали в конце, это сортировка по убыванию, по цене... не годитсяя ж ведь ниже указал: немного поторопилсяТут запрос больше для наличия ну для price, я думаю, Вам не составит труда заменить Цитата Ссылка на сообщение Поделиться на другие сайты
tom0rrow Опубликовано 15 декабря, 2013 Автор Жалоба Поделиться Опубликовано 15 декабря, 2013 я ж ведь ниже указал: немного поторопилсяТут запрос больше для наличия ну для price, я думаю, Вам не составит труда заменить Так вы знаете как решить ? Цитата Ссылка на сообщение Поделиться на другие сайты
pavel_wis Опубликовано 15 декабря, 2013 Жалоба Поделиться Опубликовано 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'; Цитата Ссылка на сообщение Поделиться на другие сайты
Julia-sk Опубликовано 22 января, 2014 Жалоба Поделиться Опубликовано 22 января, 2014 А как написать, если без учета наличия товара (есть позиции товара под заказ)? Цитата Ссылка на сообщение Поделиться на другие сайты
simpler Опубликовано 26 февраля, 2015 Жалоба Поделиться Опубликовано 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'; Попробовал этот фрагмент, получается что идет сортировка по цене от большей к меньшей, ну и естественно товары с нулевой ценой оказываются в конце списка, но такой вариант не совсем устраивает, т.к. обычно редко кто-либо сортирует товары начиная с самой дорогой цены. А может есть решение такое - сортировка идет по возврастанию цены, а товары с нулевой ценой попадают в конец списка? Посоветуйте, всю голову сломал... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.