Briss Опубликовано 26 июня, 2013 Жалоба Поделиться Опубликовано 26 июня, 2013 Доброго времени суток! Возник такой вопрос, при выборе сортировки по цене, отсутствующие товары отображаются в первую очередь, а после них уже начинается сортировка. Хотелось бы их запихнуть в конец очереди. Полагаю, что надо править view.php и Products.php, но смог лишь добиться полного исключения отсутствующих товаров из каталога. Прочитал множество тем на форуме, так и не нашёл решения Буду благодарен за подсказку\совет. Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 26 июня, 2013 Жалоба Поделиться Опубликовано 26 июня, 2013 как вариант на быструю руку ето сделать доп запрос в ORDER BY IF((SELECT COUNT(*) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1), 1, 0) DESC в Products.php Пример для сортировки по имени 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; то есть иными словами все товары у которых нет варианта будут в конце...Вариантов масса, но есть так же ньюнсы которые надо учесть Цитата Ссылка на сообщение Поделиться на другие сайты
Briss Опубликовано 27 июня, 2013 Автор Жалоба Поделиться Опубликовано 27 июня, 2013 case '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)'; break; Не работает Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 27 июня, 2013 Жалоба Поделиться Опубликовано 27 июня, 2013 $order = 'IF((SELECT COUNT(*) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1), 1, 0) DESC, (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)'; Цитата Ссылка на сообщение Поделиться на другие сайты
Briss Опубликовано 27 июня, 2013 Автор Жалоба Поделиться Опубликовано 27 июня, 2013 Работает, спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
roman_neverov Опубликовано 8 сентября, 2013 Жалоба Поделиться Опубликовано 8 сентября, 2013 Друзья, подскажите, а что делать с этим? {* Сортировка *} {if $products|count>0} <div class="sort"> Сортировать по <a {if $sort=='position'} class="selected"{/if} href="{url sort=position page=null}">умолчанию</a> <a {if $sort=='price'} class="selected"{/if} href="{url sort=price page=null}">цене</a> <a {if $sort=='name'} class="selected"{/if} href="{url sort=name page=null}">названию</a> </div> {/if} И куда вставлять ваш фрагмент кода? Цитата Ссылка на сообщение Поделиться на другие сайты
Briss Опубликовано 8 сентября, 2013 Автор Жалоба Поделиться Опубликовано 8 сентября, 2013 Наш фрагмент кода вставлять в products.php, а твой код - непосредственно в шаблон. Цитата Ссылка на сообщение Поделиться на другие сайты
roman_neverov Опубликовано 8 сентября, 2013 Жалоба Поделиться Опубликовано 8 сентября, 2013 Друзья, спасибо большое!Почему-то сначала подумал, что изменения касаются только шаблона и пытался внести изменения лишь в products.tpl Цитата Ссылка на сообщение Поделиться на другие сайты
vad Опубликовано 30 сентября, 2013 Жалоба Поделиться Опубликовано 30 сентября, 2013 (изменено) Спасибо, тоже пригодилось. Изменено 30 сентября, 2013 пользователем vad Цитата Ссылка на сообщение Поделиться на другие сайты
simpler Опубликовано 5 февраля, 2015 Жалоба Поделиться Опубликовано 5 февраля, 2015 Народ, а подскажите как сделать:На сайте дописаны сортировки по возрастанию и убыванию цены, вот по возрастаниюв Product.php: // по цене Низкие > Высокие 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; Подскажите что добавить, чтобы товары с нулевой ценой были в конце списка, а то неудобно получается. А сам принцип нулевой цены используется для товаров которые есть в наличии, но цена на них по запросу Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.