daramal Опубликовано 2 февраля, 2021 Жалоба Поделиться Опубликовано 2 февраля, 2021 Друзья, как сдвинуть товары в каталоге, которых нет в наличии в конец список? Спасибо за любую информацию! Цитата Ссылка на сообщение Поделиться на другие сайты
alexivchenko Опубликовано 2 февраля, 2021 Жалоба Поделиться Опубликовано 2 февраля, 2021 35 минут назад, daramal сказал: Друзья, как сдвинуть товары в каталоге, которых нет в наличии в конец список? Спасибо за любую информацию! Было бы не плохо не просто сдвинуть вниз, а убрать из общего потока отсутствующие товары и автоматом создать под общим потоком в категории новый блок, в котором будут товары, блок который будет называться типа "ожидается поступление" и в нем отсутствующие товары. Идем в \api\Products.php ищем в get_products($filter = array()) {...} if(!empty($filter['sort'])) switch ($filter['sort']) { case 'position': $order = 'p.position DESC'; break; case 'name': $order = 'p.name'; break; case 'created': $order = 'p.created DESC'; break; case 'price': //$order = 'pv.price IS NULL, pv.price=0, pv.price'; $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'; break; } меняем или ищем по аналогии и заменяем if(!empty($filter['sort'])) switch ($filter['sort']) { case 'position': $order = 'IF((SELECT COUNT(*) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1), 1, 0) DESC,p.position DESC'; break; case 'name': $order = 'IF((SELECT COUNT(*) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1), 1, 0) DESC,p.name'; break; case 'created': $order = 'IF((SELECT COUNT(*) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1), 1, 0) DESC,p.created DESC'; break; case 'price': //$order = 'pv.price IS NULL, pv.price=0, pv.price'; $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'; break; } Мне подсказал @Maksclub и описано тут Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 5 февраля, 2021 Автор Жалоба Поделиться Опубликовано 5 февраля, 2021 On 2/3/2021 at 12:01 AM, alexivchenko said: Было бы не плохо не просто сдвинуть вниз, а убрать из общего потока отсутствующие товары и автоматом создать под общим потоком в категории новый блок, в котором будут товары, блок который будет называться типа "ожидается поступление" и в нем отсутствующие товары. Идем в \api\Products.php ищем в get_products($filter = array()) {...} if(!empty($filter['sort'])) switch ($filter['sort']) { case 'position': $order = 'p.position DESC'; break; case 'name': $order = 'p.name'; break; case 'created': $order = 'p.created DESC'; break; case 'price': //$order = 'pv.price IS NULL, pv.price=0, pv.price'; $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'; break; } меняем или ищем по аналогии и заменяем if(!empty($filter['sort'])) switch ($filter['sort']) { case 'position': $order = 'IF((SELECT COUNT(*) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1), 1, 0) DESC,p.position DESC'; break; case 'name': $order = 'IF((SELECT COUNT(*) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1), 1, 0) DESC,p.name'; break; case 'created': $order = 'IF((SELECT COUNT(*) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1), 1, 0) DESC,p.created DESC'; break; case 'price': //$order = 'pv.price IS NULL, pv.price=0, pv.price'; $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'; break; } Мне подсказал @Maksclub и описано тут Большое спасибо. Все отлично получилось! Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.