Выдано 128848 лицензий

How To: Сортировка товаров

Указание направления сортировки возможно напрямую контроллеру показа Shop_Controller_Show методом ->orderBy($column, $direction = 'ASC'), при сортировке по цене вы можете указывать price или absolute_price (синонимы), при этом расчет absolute_price будет добавлен автоматически.

$Shop_Controller_Show->orderBy('price', 'ASC');

Сложная сортировка товаров может быть задана через метод shopItems() контроллера Shop_Controller_Show, метод возвращает объект Shop_Item_Model с настроенными ограничениями. Для удаления предыдущих установок сортировки используется clearOrderBy()

Сортировка по наличию и названию товара

Товары, отсутствующие на складе, выводятся в конце списка, это достигается использованием функции SIGN(X), которая для остатка на складе возвращает знак аргумента в виде -1, 0 или 1, в зависимости от того, является ли X отрицательным, нулем или положительным.

$Shop_Controller_Show
    ->shopItems()
    ->queryBuilder()
    ->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id')
    ->groupBy('shop_items.id')
    ->clearOrderBy()
    ->orderBy(Core_QueryBuilder::expression('SIGN(SUM(`shop_warehouse_items`.`count`))'), 'DESC')
    ->orderBy('shop_items.name', 'ASC');

$Shop_Controller_Show->show();

Не нашли ответ на свой вопрос в документации? Направьте обращение в или онлайн чат.

Комментарии

  • hostmarketplace

    Сортировка с $Shop_Controller_Show->orderBy

    А как реализовать сортировку для такого:
    ($sorting == 1 || $sorting == 2)
    && $Shop_Controller_Show->orderBy('absolute_price', $sorting == 1 ? 'ASC' : 'DESC');

    10.06.2020 08:53:45 hostmarketplace

    Без темы

    Не совсем понимаю, вы же и решение написали после вопроса.

    10.06.2020 09:10:37 hostcms