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

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

dimon M
dimon M
Репутация: 1
Сообщения: 86
Зарегистрирован: 16.08.2017
С нами: 6 лет 7 месяцев
Откуда: Харьков

Сообщение #1 dimon » 06.09.2019, 07:36

Добрый день!
Как сделать чтобы товары с количеством "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;

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #2 korshunov » 06.09.2019, 09:26

Пробуйте

$order = '( (SELECT count(pv.id)
FROM __variants pv
WHERE (pv.stock > 0 OR pv.stock IS NULL) AND p.id = pv.product_id)>0 ) DESC, p.position DESC';

dimon M
dimon M
Репутация: 1
Сообщения: 86
Зарегистрирован: 16.08.2017
С нами: 6 лет 7 месяцев
Откуда: Харьков

Сообщение #3 dimon » 06.09.2019, 12:41

korshunov писал(а):Пробуйте

$order = '( (SELECT count(pv.id)
FROM __variants pv
WHERE (pv.stock > 0 OR pv.stock IS NULL) AND p.id = pv.product_id)>0 ) DESC, p.position DESC';
Все Ок, получилось, спасибо!

sh877
sh877
Репутация: 0
Сообщения: 2
Зарегистрирован: 16.05.2017
С нами: 6 лет 10 месяцев

Сообщение #4 sh877 » 20.09.2019, 08:48

Как реализовать данные решения для версии OkayCMS 3.0.2

zyxer M
zyxer M
Возраст: 32
Репутация: 77
Сообщения: 419
Зарегистрирован: 03.02.2016
С нами: 8 лет 1 месяц
Откуда: Днепр

Сообщение #5 zyxer » 23.09.2019, 07:12

sh877 писал(а):Как реализовать данные решения для версии OkayCMS 3.0.2
нужно в Okay/Entities/ProductsEntity в методе customOrder добавить еще один кейс.

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

case 'stock' :
    $orderFields = [
        "( (SELECT count(pv.id)
        FROM __variants pv
        WHERE (pv.stock > 0 OR pv.stock IS NULL) AND p.id = pv.product_id)>0 ) DESC",
        "p.position DESC",
    ];
    break;

Обратите внимание, $orderFields это массив с двух элементов. Доработку в контроллере я так понимаю вы сами сможете реализовать? CategoryController это аналог старого ProductsView
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS


Название раздела: Заказ шаблонов и услуг
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Заказ шаблонов и услуг»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 10 гостей