admin Опубликовано 12 марта, 2022 Поделиться Опубликовано 12 марта, 2022 С коробки сортировка на странице акции по цене работает не правильно. Исправляем баг Opencart Недавно столкнулся с тем что мне надо было сделать сортировку по цене от меньшего к большему на странице Акции (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']; } чистим модификаторы и наслаждаемся результатами 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.