Недавно столкнулся с тем что мне надо было сделать сортировку по цене от меньшего к большему на странице Акции (product/special). Вся проблема заключается в том что такая сортировка предусмотрена в Opencart на странице акций, но она неправильно работает.

Вообще, что бы задать сортировку на странице категории где есть перечень товаров достаточно указать ее вверху файла а именно задать строку

$sort = 'p.price';

и немного ниже указать ASC или DESC, например

$order = 'ASC';

В таком случае у нас товары в категориях буду сортироваться по цене от меньшей и большей.

Но на странице акций этот трюк не подойдет. Почему так?

Дело в том что на этой странице все товары идут акционные и цена их берется из таблицы product_special где цена обозначается как ps.price. Но все равно когда мы поставили эти значения у нас нет сортировки по цене. Проблема в том что mysql там сортирует как текстовое значение а не как числовое. Для того что бы работало нам надо просто добавить в сортировку +0. Таким образом мы переведем в числовой формат и сортировка будет натуральной.

До изменений сортирует так: 1000, 11, 147 и т.п.

После правок сортировать будет как надо: 11, 147, 1000

Итак, приступим. Открываем файл catalog/model/catalog/product.php и находим метод getProductSpecials где строку:

$sql .= ' ORDER BY ' . $data['sort'];

Заменяем на:

if ($data['sort'] == 'ps.price') {
  $sql .= ' ORDER BY (' . $data['sort'] . '+0)';
}else{
  $sql .= ' ORDER BY ' . $data['sort'];
}



чистим модификаторы и наслаждаемся результатами :)


22.09.2017 3411
Новости из этой категории
11.09.2019 5068
В Opencart при копировании товара удаляет
Во втором Opencart замечен странный баг который вместо копирования товара в списке его удаляет. Что бы исправить необходимо открыть файлadmin/view/template/catalog/produc..
15.11.2018 17423
Как вывести любую информацию в любом месте в карточке товара
Приветствую тебя юный разработчик! Очень часто в заданиях или целых проектах у меня бывают похожие пункты. Очень популярный это вывод информационного блока в карточке тов..
29.09.2018 8222
Исправляем баг Opencart редирект с page=1 на страницу категории
В пагинации Opencart зарыто очень много багов. Например при перелистывании категории кнопками 1.2.3... у нас создаются дубли страниц, которые можно решить с помощью внедр..
11.02.2018 8005
Как задать разный порядок сортировки товара для каждой из категорий к которому он привязан
Приветствую! Недавно мне написал заказчик который попросил меня сделать достаточно интересную доработку. Суть ее в том что надо сделать порядок сортировки товара который ..
23.01.2018 9945
Пропадают заказы в Opencart - как вылечить?
Очень часто ко мне обращаются мои клиенты с просьбой разобраться почему у них пропадают заказы. То есть клиенты звонят и говорят что заказ сделали но никто не перезванива..
Вся информация, представленная на сайте, является демонстрационной и оставляя информацию о своих персональных данных, вы добровольно делаете их общедоступными.
Рекомендуем использовать обезличенные данные. Мы используем файлы cookie для вашего удобства пользования сайтом и повышения качества рекомендаций. Подробнее