[Помощь] WA SS Автоматическая сортировка товара при показе по наличию

sonicm

Борщ
Регистрация
15 Май 2009
Сообщения
244
Реакции
141
WA SS версия 3.
Не получается настроить в каталоге автоматическую сортировку товаров по наличию - нужно чтобы сразу выводится список товаров, которые есть на складе, а в конце - те что нету.

Пробовал править product_functions.php

Заменил код
$order_by_clause = ' ORDER BY sort_order, '.LanguagesManager::sql_getSortField(PRODUCTS_TABLE, $sort_field);

На этот
$Register = &Register::getInstance(); $admin_mode = $Register->get('admin_mode'); if(isset($callBackParam['categoryID']) && !$admin_mode){ $order_by_clause = ' ORDER BY IF(in_stock>0,1,0) DESC, sort_order, '.LanguagesManager::sql_getSortField(PRODUCTS_TABLE, $sort_field); }else{ $order_by_clause = ' ORDER BY sort_order, '.LanguagesManager::sql_getSortField(PRODUCTS_TABLE, $sort_field); }

Результат нулевой - ничего не поменялось. Подскажите что поправить, чтобы все-таки эта опция заработала.
Пример вывода товаров в категории (магазин интимных товаров) http:// cosmosex . by/category/ketsjuitsy/
 
1. Замените в файле published/SC/html/scripts/core_functions/product_functions.php строку
PHP:
$order_by_clause = ' ORDER BY sort_order, '.LanguagesManager::sql_getSortField(PRODUCTS_TABLE, $sort_field);
на
PHP:
$order_by_clause = ' ORDER BY IF(`in_stock` > 0,1,0) DESC, sort_order';

2. В файле published/SC/html/scripts/includes/category.php после
PHP:
$show_comparison = $category['allow_products_comparison'];
for($i=0; $i<count($products); $i++)$products[$i]['allow_products_comparison'] = $show_comparison;
if ( CONF_PRODUCT_SORT == '1' )_sortSetting( $smarty );
добавляем
PHP:
$products_in_stock = array();
$products_out_of_stock = array();
foreach ($products as $p){
    if ($p['in_stock'] > 0){
        $products_in_stock[] = $p;
    }else{
        $products_out_of_stock[] = $p;
    }
}
$products = array_merge($products_in_stock, $products_out_of_stock);
 
просто мистика какая-то... сделал как вы написали, но тоже совсем ничего не изменилось :(

В инсталлере удалял кэш.
 
Проблема решена.
Суть проблемы в том, что в настройках магазина была выключена опция "Вести учет товаров на складе", а товары в категории показывались по условию включенной опции "Можно купить" в свойствах товара.
По итогу надо было просто заменить условие сортировки на такое
PHP:
$order_by_clause = ' ORDER BY IF(`ordering_available` > 0,1,0) DESC, sort_order, '.LanguagesManager::sql_getSortField(PRODUCTS_TABLE, $sort_field);
 
Назад
Сверху