Добрый день, у меня аналогичная ситуация, ocstore 2.3 и стоит Brainy Filter.
Редактировал catalog/model/catalog/product.php
Мне нужно было сделать товар с ценой 0 в конце списка, сортировка по умолчанию - по возрастанию цены.
Сделал в методе getProducts() следующее:
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
$sql .= " ORDER BY IF(p.price = '0', 1, 0), LCASE(" . $data['sort'] . ")";
} elseif ($data['sort'] == 'p.price') {
$sql .= " ORDER BY IF(p.price = '0', 1, 0), (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
} else {
$sql .= " ORDER BY IF(p.price = '0', 1, 0), " . $data['sort'];
}
} else {
$sql .= " ORDER BY IF(p.price = '0', 1, 0), p.sort_order";
}
работает только в том случае, если отключен Brainy Filter.
Получается, что BF модифицирует getProducts()
Что нужно сделать, чтобы товары с ценой 0 подвинуть в конец списка и при этом сохранить работу фильтра?