Опять мучаю стандартный поиск
Вопрос к разработчикам. Заметил, что при любом типе поиска сортировка слетает, так как контроллер ListProducts в 247
просто устанавливает свою сортировку. Это неправильно! При полнотекстовом поиске, например, идет сортировка по релевантности, а она сбрасывается на сортировку по-умолчанию.
Может быть не устанавливать сортировку при наличии запроса на поиск и неустановленной принудительной сортировке? Пока просто перенес установку сортировки:
//Устанавливаем сортировку
//$sort_field = $this->cur_sort == 'rank' ? $this->cur_sort : $this->api->defAlias().'.'.$this->cur_sort;
//$this->api->setSortOrder($sort_field, $this->cur_n_sort);
if (!empty($this->query) && $dir == 0) { //Если это результат поиска,
$sub_dirs = $this->api->getDirList(); //Загружаем список категорий, в которых найдены товары
} else {
//eventus
$sort_field = $this->cur_sort == 'rank' ? $this->cur_sort : $this->api->defAlias().'.'.$this->cur_sort;
$this->api->setSortOrder($sort_field, $this->cur_n_sort);
//Загружаем список подактегорий, у текущей категории
$this->dirapi->setFilter('parent', $dir_id);
$this->dirapi->setFilter('public', 1);
$sub_dirs = $this->dirapi->getList();
}
Стоит сортировка по-умолчанию по дате создания товара.
Было в результатах поиска:
Подставка для шоколада
...куча другого товара с шоколадом в 20-й позиции
Шоколад такой то
Стало:
Шоколад такой то
Подставка для шоколада
...куча другого товара с шоколадом в 20-й позиции
Сортировка order by RANK просто напросто игнорируется в стандартном коде. Или я чего то не понимаю.
p.s.
Кстати, для поиска like можно добавить сортировку через LOCATE, тогда результаты замечательно сортируются по вхождению строки:
ORDER BY LOCATE('шоколад',B.`title`)