Jump to content

Recommended Posts

Доброго времени суток! Возник такой вопрос, при выборе сортировки по цене, отсутствующие товары отображаются в первую очередь, а после них уже начинается сортировка. Хотелось бы их запихнуть в конец очереди. Полагаю, что надо править view.php и Products.php, но смог лишь добиться полного исключения отсутствующих товаров из каталога. Прочитал множество тем на форуме, так и не нашёл решения :) Буду благодарен за подсказку\совет.

Link to post
Share on other sites

как вариант на быструю руку ето сделать доп запрос в 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;

то есть иными словами все товары у которых нет варианта будут в конце...

Вариантов масса, но есть так же ньюнсы которые надо учесть

Link to post
Share on other sites
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;

 

Не работает :(
Link to post
Share on other sites

$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)';
Link to post
Share on other sites
  • 2 months later...

Друзья, подскажите, а что делать с этим?

{* Сортировка *}
{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}

И куда вставлять ваш фрагмент кода?

Link to post
Share on other sites
  • 4 weeks later...
  • 1 year later...

Народ, а подскажите как сделать:

На сайте дописаны сортировки по возрастанию и убыванию цены, вот по возрастанию

в 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;

 

Подскажите что добавить, чтобы товары с нулевой ценой были в конце списка, а то неудобно получается. А сам принцип нулевой цены используется для товаров которые есть в наличии, но цена на них по запросу

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...