Сортировка товаров по цене (по умолчанию) Opencart
- Stats: 17064 0
- Author: admin
- Category: CMS Opencart, Шпаргалка
- Comments: Комментариев нет

Для сайта одного из заказчиков нужно было поменять сортировку товаров в Категориях по умолчанию. Решили написать эту небольшую статью, что бы было понятно какие переменные за это отвечают и где нужно внести изменения. Переменные в OpenCart выглядят следующим образом.
'pd.name', - сортировка по имени.
'p.model', - сортировка по модели.
'p.quantity', - сортировка по количеству.
'p.price', - сортировка по цене.
'rating', - сортировка по рейтингу.
'p.sort_order', - сортировка, которая стоит по умолчанию.
'p.date_added' - сортировка по дате добавления.
Соответственно, для каждого типа сортировки нужно будет задать направление, это:
DESC - по убыванию,
ASC - по возрастанию.
Как сделать сортировка по умолчанию товаров в категории по цене
Открываем файл
\catalog\controller\product\category.php
В самом начале файла находим вот это:
if (isset($this->request->get['sort'])) {
$sort = $this->request->get['sort'];
} else {
$sort = 'pd.name';
}
меняем
$sort = 'pd.name';
на
$sort = 'p.price'
Если хотите сортировать по убыванию тогда меняем:
if (isset($this->request->get['order'])) {
$order = $this->request->get['order'];
} else {
$order = 'ASC';
}
меняем
$order = 'ASC';
на
$order = 'DESC'
if (isset($this->request->get['sort'])) {
$sort = $this->request->get['sort'];
} else {
<strong>$sort = 'p.price';</strong>
}
if (isset($this->request->get['order'])) {
$order = $this->request->get['order'];
} else {
$order = 'DESC';
где DESC
— сначала дорогие товары,
а ASC
— сначала дешевые потом дорогие.
Меняем тип сортировки По умолчанию на сортировку по Дате добавления (без добавления в список «Сортировать по»).
Открываем файл
\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';
$order = 'ASC';
где DESC
— сначала новые, потом старые,
а ASC
— сначала старые потом новые.
Убрать ненужные сортировки
Открываем файл
\catalog\controller\product\category.php
ищи примерно в 215 строке кусок кода типа
$this->data['sorts'] = array();
$this->data['sorts'][] = array(
'text' => $this->language->get('text_default'),
'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_name_asc'),
'value' => 'pd.name-ASC',
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=ASC' . $url)
);
..........
Это массив с вариантами сортировки.
По умолчанию задаётся в районе 12 строки:
if (isset($this->request->get['sort'])) {
$sort = $this->request->get['sort'];
} else {
$sort = 'p.sort_order';
}
Ненужные сортировки удаляем из массива, вот и все.
Еще раз основные значения сортировки:
$sort = 'pd.name';
— по Имени
$sort = 'p.price';
— по Ценам
$sort = 'rating';
— по Рейтингу
Направление
$order = 'ASC';
— от А до Я (Низкому)
$order = 'DESC'
— от Я до А (Высокому)
Надеемся, что статья окажется кому то полезной, не забудьте подписываться на наш Информационный портал
Отправить ответ