Автор Тема: товары найденные через ПОИСК не сортируется по количеству  (Прочитано 210 раз)

29 Сентября 2015, 11:30:36
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день, хочу попросить помощи у знатоков, возможно кто сталкивался, подскажите... ПОЖАЛУЙСТА :'(
На сайте есть сортировка товаров по количеству и она работает без нариканий, вначале товары которые есть в наличии, потом которых нету. Все бы хорошо, но когда ищешь товары через ПОИСК то в результате найденные товары не сортируется по количеству. Как решить данную проблему????

Я так понимаю надо править файл classes/Search.php но где именно и как не знаю.
Пробовал строку public static function find position меняем на quantity
и в конце функции так где аякс пробовал ORDER BY вставил p.`quantity` DESC,
не помогло.

29 Сентября 2015, 12:11:49
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85943
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Еще нужно исправить один запрос ниже того, что вы исправили, там где подстановка переменных сортировки
'.($order_by ? 'ORDER BY  '.$alias.$order_by : '').($order_way ? ' '.$order_way : '').'
LIMIT '.(int)(($page_number - 1) * $page_size).','.(int)$page_size;
29 Сентября 2015, 12:28:14
Ответ #2
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Еще нужно исправить один запрос ниже того, что вы исправили, там где подстановка переменных сортировки
'.($order_by ? 'ORDER BY  '.$alias.$order_by : '').($order_way ? ' '.$order_way : '').'
LIMIT '.(int)(($page_number - 1) * $page_size).','.(int)$page_size;



А как именно исправить этот код?
29 Сентября 2015, 12:42:43
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85943
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
29 Сентября 2015, 12:48:23
Ответ #4
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
ORDER BY  quantity DESC

Все равно не помогло
'.($order_by ? 'ORDER BY  quantity DESC'.$alias.$order_by : '').($order_way ? ' '.$order_way : '').'
            LIMIT '.(int)(($page_number - 1) * $page_size).','.(int)$page_size;
29 Сентября 2015, 12:55:19
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 2156
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
$alias.$order_by : '').($order_way ? ' '.$order_way : '')Вот это не нужно. Зачем оставляешь, если ты поменял сортировку на количество. Оставляй только
ORDER BY  quantity DESCВ url можно увидеть переменные сортировки orderby и orderway.
/search?controller=search&orderby=position&orderway=desc&search_query=text&submit_search= 
29 Сентября 2015, 13:05:55
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 2156
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
Еще можно не удалять эти переменные, а присвоить им занчения.
$order_by = 'quantity';
$order_way = 'DESC';
29 Сентября 2015, 13:11:17
Ответ #7
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Еще можно не удалять эти переменные, а присвоить им занчения.
$order_by = 'quantity';
$order_way = 'DESC';


У меня в объявлении функции find и так этим переменным присвоенные эти значения

Есть подозрения что эта функция вообще не используется так как я удаляю всю функцию и поиск продолжает работать
29 Сентября 2015, 13:13:17
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
Для поиска через модуль blocksearch в шапке сайта можно изменить направление сортировки в шаблоне
/themes/default-bootstrap/modules/blocksearch/blocksearch-top.tpl
<input type="hidden" name="orderby" value="position" />
<input type="hidden" name="orderway" value="desc" />
29 Сентября 2015, 13:18:15
Ответ #9
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля


Вот файл, все сделал так как вы описали, но все равно не работает...
Можете глянуть, может я слепой
29 Сентября 2015, 13:19:05
Ответ #10
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для поиска через модуль blocksearch в шапке сайта можно изменить направление сортировки в шаблоне
/themes/default-bootstrap/modules/blocksearch/blocksearch-top.tpl
<input type="hidden" name="orderby" value="position" />
<input type="hidden" name="orderway" value="desc" />

поменял position на quantity, тоже ничего
29 Сентября 2015, 13:24:25
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
В адресе изменились параметры поиска? Кеш очистили?
29 Сентября 2015, 13:28:37
Ответ #12
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В адресе изменились параметры поиска? Кеш очистили?

Ссылка поменялась. но товары местами не поменялись
29 Сентября 2015, 13:29:58
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
Вот файл, все сделал так как вы описали, но все равно не работает...
Можете глянуть, может я слепой
Если вы меняете шаблон blocksearch-top.tpl, то менять класс не нужно.
29 Сентября 2015, 13:30:53
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля