insider Опубликовано 26 октября, 2014 Жалоба Поделиться Опубликовано 26 октября, 2014 Не могу разобраться с сортировкой товаров. в Products.php: case 'position': $order = 'p.position DESC'; break; // по цене Низкие > Высокие case 'price_asc': $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)'; break; // по цене Высокие < Низкие case 'price_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'; break; case 'created': $order = 'p.created DESC'; break; Вывожу в шаблоне через вызов: <div class="sort"> Сортировать {$cat->name|escape}: <a {if $sort=='position'} class="selected"{/if} href="{url sort=position page=null}">по популярности</a> <a {if $sort=='price_asc'} class="selected"{/if} href="{url sort=price_asc page=null}">по возрастанию цены</a> <a {if $sort=='price_desc'} class="selected"{/if} href="{url sort=price_desc page=null}">по убыванию цены</a> <a {if $sort=='discounted_products'} class="selected"{/if} href="{url sort=discounted_products page=null}">по скидке</a> </div> Как сделать запрос по товарам с дисконтом в Products.php? Как правильно использовать discounted_products? Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 26 октября, 2014 Жалоба Поделиться Опубликовано 26 октября, 2014 В полной общности сортировка по скидке, строго говоря, смысла не имеет, так как не у всех товаров есть скидка.Можно конечно, считать, что у остальных товаров нулевая скидка, но смысла в сортировке по величине скидке обычно никакого. Вряд ли кого заинтересует товар стоимостью 1 миллион, только потому, что перед этим цена была 11 миллионов, а Вы сделали скидку в 10 миллионов... Возможно разные варианты. Один из вариантов в упрощенном виде// по скидкеcase 'discounted_products':$order = '(SELECT pv.compare_price-pv.price FROM __variants pv WHERE p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE product_id=p.id LIMIT 1) LIMIT 1) DESC';break; Цитата Ссылка на сообщение Поделиться на другие сайты
insider Опубликовано 26 октября, 2014 Автор Жалоба Поделиться Опубликовано 26 октября, 2014 В полной общности сортировка по скидке, строго говоря, смысла не имеет, так как не у всех товаров есть скидка.Можно конечно, считать, что у остальных товаров нулевая скидка, но смысла в сортировке по величине скидке обычно никакого. Вряд ли кого заинтересует товар стоимостью 1 миллион, только потому, что перед этим цена была 11 миллионов, а Вы сделали скидку в 10 миллионов... Возможно разные варианты. Один из вариантов в упрощенном виде// по скидкеcase 'discounted_products':$order = '(SELECT pv.compare_price-pv.price FROM __variants pv WHERE p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE product_id=p.id LIMIT 1) LIMIT 1) DESC';break;Попробовал данное решение, но сортировка происходит вразброс. Как сделать вызов, чтобы от большей скидки до меньшей осуществлялся вывод позиций? Цитата Ссылка на сообщение Поделиться на другие сайты
tsybart Опубликовано 6 апреля, 2015 Жалоба Поделиться Опубликовано 6 апреля, 2015 В полной общности сортировка по скидке, строго говоря, смысла не имеет, так как не у всех товаров есть скидка.Можно конечно, считать, что у остальных товаров нулевая скидка, но смысла в сортировке по величине скидке обычно никакого. Вряд ли кого заинтересует товар стоимостью 1 миллион, только потому, что перед этим цена была 11 миллионов, а Вы сделали скидку в 10 миллионов... Возможно разные варианты. Один из вариантов в упрощенном виде// по скидкеcase 'discounted_products':$order = '(SELECT pv.compare_price-pv.price FROM __variants pv WHERE p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE product_id=p.id LIMIT 1) LIMIT 1) DESC';break; работает, как сделать, что бы сортировка акционных товаров и товаров после них была по дате добавления? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.