Страница 1 из 1

Как сделать, чтобы товары с ценой "0" были в конце списка.

Добавлено: 22.07.2019, 11:46
dimon
Как сделать, чтобы товары с ценой "0" были в конце списка.

Добавлено: 22.07.2019, 12:02
korshunov
Дорабатывать сортировку надо.
Вопрос не совсем простой, поскольку стандартно есть сортировки товаров, например, по имени, и при принудительной сортировке с добавочным условием уже сортировка по имени работать и не будет, как ожидает пользователь. Для начала надо планировать желаемое и разрешать такие коллизии на начальном этапе...

Подобная тема
http://forum.simplacms.ru/topic/8330-сортировка-т ... вар-c-кол-вом-0-в-конец-списк/

Добавлено: 22.07.2019, 13:45
makki
dimon писал(а):Как сделать, чтобы товары с ценой "0" были в конце списка.
файл api/Products.php

строка 109 вместо

Код: Выделить всё

case 'position':
                    $order = 'p.position DESC';
                    break;

напишите

Код: Выделить всё

case 'position':
                    $order = '( (SELECT count(pv.id)
                        FROM __variants pv                       
                        WHERE pv.price > 0 AND p.id = pv.product_id)>0 ) DESC, p.position DESC';
                    break;

Добавлено: 23.07.2019, 05:19
dimon
makki писал(а):
dimon писал(а):Как сделать, чтобы товары с ценой "0" были в конце списка.
файл api/Products.php

строка 109 вместо

Код: Выделить всё

case 'position':
                    $order = 'p.position DESC';
                    break;

напишите

Код: Выделить всё

case 'position':
                    $order = '( (SELECT count(pv.id)
                        FROM __variants pv                       
                        WHERE pv.price > 0 AND p.id = pv.product_id)>0 ) DESC, p.position DESC';
                    break;
Спасибо, ваше решение все работает.