Всех приветствую. Есть такая проблема. Нужно, чтобы в категории при сортировке товаров по цене по возрастанию, товары с нулевой ценой были в конце списка.
Пробывал разные варианты, но, видимо, моих знаний MySql не хватает.
Буду благодарен, если кто-нибудь поможет решить проблему или направит на путь истинный. На входе: Opencart 1.5.3.1 Кусок кода из файла catalog/model/catalog/product.php с функцией getProducts($data = array()) Как Вы видите, код немного изменён. В начале функции изменён sql - запрос, чтобы вытягивать discount и special, и в конце запроса, там где сортировка, запрос тоже изменён, чтобы использовать discount и special. Собственно, изменения взяты из более поздних версий движка. Ниже кусок кода. Комментом выделено то место, где скорее всего потребуются изменения.
// Sorting by price with special and discount
if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
} elseif ($data['sort'] == 'p.price') {
// Смотреть на эту строчку
$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
// Смотреть на эту строчку
} else {
$sql .= " ORDER BY " . $data['sort'];
}
} else {
$sql .= " ORDER BY p.sort_order";
}
// Sorting by price with special and discount
Код функции getProducts($data = array())