Сайт существует давно. Я с ним "дружу" недавно. В категориях не работает сортировка по цене, при выборе обоих вариантов (по возрастанию и убыванию) просто падает страница. Включил отчет об ошибках, получил такое:
Fatal error: Uncaught exception 'ErrorException' with message 'Error: Unknown column 'special' in 'order clause'<br />Error No: 1054<br />SELECT p.product_id, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2020-05-26 11:02:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2020-05-26 11:02:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2020-05-26 11:02:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2020-05-26 11:02:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM oc_product_to_category p2c LEFT JOIN oc_product p ON (p2c.product_id in /home/libramarket.com.ua/www/system/database/mysqli.php on line 41.
На данный момент сделал костыль - если в контроллере категории в сортировке добавить код &coolfilter=p:1,99999 как ниже, то ошибка исчезает. Это дополнительный вызов "умного фильтра" для выборки по цене. То есть, со вторым параметром GET запроса страница не падает, а с одним вида ?sort=p.price&order=DESC - падает.
$this->data['sorts'][] = array(
'text' => $this->language->get('text_price_asc'),
'value' => 'p.price-ASC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC&coolfilter=p:1,99999' . $url)
);
Как пример перейдите по ссылке на сайт БЕЗ костыля, чтобы понимать как это выглядит. Контроллер категорий прикрепляю.
category.php