Как добавить «сортировка по поступлению» на страницах товаров и вообще где правиться это выпадающее меню «сортировка»?
Меняем сортировку товаров в витрине по умолчанию
по дате добавления, имени, модели, количеству, цене или рейтингу.
Долго мучилась, нигде не мог найти информацию. Нашел — делюсь=)
З.Ы. Кстати, этот метод позволит устранить повторение одних и тех же товаров на разных страницах одной категории.
Ибо сортировка По умолчанию очень часто творит подобные гадости…
З.Ы.Ы. У меня в примере товары будут отсортированы по дате добавления, но по образцу можно сделать любой вид сортировки.
Переменные в OpenCart 1.5.4 выглядят следующим образом.
Далее поймёте, где это нужно будет вставлять
'pd.name', - сортировка по имени. 'p.model', - сортировка по модели. 'p.quantity', - сортировка по количеству. 'p.price', - сортировка по цене. 'rating', - сортировка по рейтингу. 'p.sort_order', - сортировка, которая стоит по умолчанию. 'p.date_added' - сортировка по дате добавления.
Соответственно, для каждого типа сортировки нужно будет задать направление, это:
DESC — по убыванию,
ASC — по возрастанию.
1. Меняем тип сортировки По умолчанию на сортировку по Дате добавления (без добавления в список «Сортировать по»).
Просто меняем принцип отображения товаров для метода «По умолчанию».
Открываем файл \catalog\controller\product\category.php
В самом начале файла находим вот это:
if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC';
и меняем
$sort = 'p.sort_order';
на
$sort = 'p.date_added';
Для того, чтобы изменить порядок отображения (По убыванию/По возрастанию), нужно изменить где DESC — сначала новые, потом старые, а ASC — сначала старые потом новые.
В принципе, этого уже достаточно. Можно оставить название метода сортировки прежним «По умолчанию», а можно переименовать переменную ‘text_default’ в файле \catalog\language\russian\product\category.php. И радоваться жизниwink.png
2. Но если нужно, чтобы новый вариант был добавлен в выбор сортировки и назывался по-другому, делаем следующее:
Остаёмся в том же файле \catalog\controller\product\category.php.
Ищем вот этот кусок кода (примерно 200 строка):
$this->data['sorts'][] = array( 'text' => $this->language->get('text_date_desc'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url) );
и добавляем сразу после него вот этот код:
$this->data['sorts'][] = array( 'text' => $this->language->get('text_date_desc'), 'value' => 'p.date_added-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.date_added&order=DESC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_date_asc'), 'value' => 'p.date_added-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.date_added&order=ASC' . $url) );
Где в качестве ‘text_date_desc’ и ‘text_date_asc’ выступают наши новые названия для сортировки по дате добавления товаров в прямом и обратном порядке.
3. Чтобы настроить корректный вывод названия новых типов сортировки ‘text_date_desc’ и ‘text_date_asc’
редактируем соответствующий языковой файл.
Для моего примера просто добавляем эти строки в файл: \catalog\language\russian\product\category.php
$_['text_date_asc'] = 'Сначала новые товары'; $_['text_date_desc'] = 'Сначала старые товары';
З.Ы. Статя как всегда «спишенно» — на этот раз с opencartforum.com