Что имеем: есть специальный прайс, товары в котором должны публиковаться с нулевой (закрытой) ценой на сайте. Товары из этого прайса лежат в тех же категориях, что и обычные товары с открытой ценой.
Проблема: если указать вариант сортировка «Дешёвые выше» то все товары, стоимость которых равна нулю, будет в самом верху позиции, мешая отображению товаров с открытой ценой.
Задача: нужно, чтобы товары с нулевой ценой всегда отображались после товаров с открытыми ценами.
На форуме натыкался на ссылки сторонних модулей, но они работают с «нулевым наличием». Возможно можно внести правку в каком-нибудь файле для правки сортировки или есть какой-нибудь готовый модуль, который я не видел. Буду признателен за наводку.
К сожалению, этот модуль сортирует только по наличию. А мне нужно по цене: нулевая цена — в конце списка.
Техподдержка дала наводку, что за сортировку отвечает функция fn_get_products в файле app/functions/fn.products.php. Кто может подсказать что нужно прописать, чтобы товары без цены были в конце?
Продаём профессиональное проектное оборудование, которого чаще всего его нет в наличии. Часть товаров идёт с открытой ценой, которую можно заказать где-угодно, часть товаров с закрытой ценой, которая выдаётся под конкретный объект.
В обоих случаях товара нет в наличии на складе, но цены при этом могут быть открыты и закрыты. Поэтому и приоритет отображения по цене
Присоединяюсь к вопросу, никто не реализовал ?
Я так понимаю, что надо прописать условие, при котором будет сортировка от меньшего (выше нуля) к большему
Подключаетесь к хуку get_products из файла fn.products.php. И модифицируете 2 переменные - $fields и $sortings. Для выборки из базы с правильной сортировкой надо добавить вот такую строчку:
$fields['sort_zero_price'] = 'IF(prices.price = 0, 0, 1) AS zero_price_last';
После этого добавьте это правило сортировки в массив $sortings, дополнительным полем.
Например для сортировки по цене сделать так: $sortings['price'] = [ 'zero_price_last', 'price' ];