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

29 Сентябрь 2015, 14:55:19
Ответ #30
  • Фрилансер
  • *
  • Сообщений: 140
  • Репутация: +2/-1
  • Сообщество PrestaShop
    • Просмотр профиля
У вас сортировка и в категориях не работает, не только при поиске.
29 Сентябрь 2015, 15:25:55
Ответ #31
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У вас сортировка и в категориях не работает, не только при поиске.
Решил проблему, может кому будет полезно
По мимо всех тех файлов что я правил выше, нашел /override/classes/ файл Search.php
в нем подправил
    public static function find($id_lang, $expr, $page_number = 1, $page_size = 1, $order_by = '[b]quantity[/b]',
$order_way = 'desc', $ajax = false, $use_cookie = true, Context $context = null)
{
...
                    if (count($score_array))
                            $score = ',(
                                    SELECT SUM(weight)
                                    FROM '._DB_PREFIX_.'search_word sw
                                    LEFT JOIN '._DB_PREFIX_.'search_index si ON sw.id_word = si.id_word
                                    WHERE sw.id_lang = '.(int)$id_lang.'
                                            AND sw.id_shop = '.$context->shop->id.'
                                            AND si.id_product = p.id_product
                                            AND ('.implode(' OR ', $score_array).')
                            ) [b]quantity[/b]';
...
if ($ajax)
{
$sql = 'SELECT DISTINCT p.id_product, pl.name pname, cl.name cname,
cl.link_rewrite crewrite, pl.link_rewrite prewrite '.$score.'
FROM '._DB_PREFIX_.'product p
INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON (
p.`id_product` = pl.`id_product`
AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').'
)
'.Shop::addSqlAssociation('product', 'p').'
INNER JOIN `'._DB_PREFIX_.'category_lang` cl ON (
product_shop.`id_category_default` = cl.`id_category`
AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').'
)
WHERE p.`id_product` '.$product_pool.'
[b]ORDER BY quantity DESC LIMIT 10';[/b]
return $db->executeS($sql);
}
...

                                [b]ORDER BY `quantity` DESC [/b]
LIMIT '.(int)(($page_number - 1) * $page_size).','.(int)$page_size;
$result = $db->executeS($sql);