Перейти к содержанию
Официальный форум поддержки Simpla

Сортировка товаров по скидке


Рекомендуемые сообщения

Не могу разобраться с сортировкой товаров.

 

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

 

 

Ссылка на сообщение
Поделиться на другие сайты

В полной общности сортировка по скидке, строго говоря, смысла не имеет, так как не у всех товаров есть скидка.

Можно конечно, считать, что у остальных товаров нулевая скидка, но смысла в сортировке по величине скидке обычно никакого.  Вряд ли кого заинтересует товар стоимостью 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;

Ссылка на сообщение
Поделиться на другие сайты

В полной общности сортировка по скидке, строго говоря, смысла не имеет, так как не у всех товаров есть скидка.

Можно конечно, считать, что у остальных товаров нулевая скидка, но смысла в сортировке по величине скидке обычно никакого.  Вряд ли кого заинтересует товар стоимостью 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;

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

Ссылка на сообщение
Поделиться на другие сайты
  • 5 месяцев спустя...

В полной общности сортировка по скидке, строго говоря, смысла не имеет, так как не у всех товаров есть скидка.

Можно конечно, считать, что у остальных товаров нулевая скидка, но смысла в сортировке по величине скидке обычно никакого.  Вряд ли кого заинтересует товар стоимостью 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;

 

 

работает, как сделать, что бы сортировка акционных товаров и товаров после них была по дате добавления?

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...