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

Тема в разделе "WebAsyst", создана пользователем sonicm, 17 окт 2013.

Модераторы: mdss
  1. sonicm

    sonicm

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

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

    Заменил код
    На этот
    Результат нулевой - ничего не поменялось. Подскажите что поправить, чтобы все-таки эта опция заработала.
    Пример вывода товаров в категории (магазин интимных товаров) http:// cosmosex . by/category/ketsjuitsy/
     
  2. mdss

    mdss ♖♘♗♕♔♗♘♖

    Moderator
    Регистр.:
    20 фев 2007
    Сообщения:
    1.126
    Симпатии:
    668
    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);
     
    sonicm нравится это.
  3. sonicm

    sonicm

    Регистр.:
    15 май 2009
    Сообщения:
    182
    Симпатии:
    81
    просто мистика какая-то... сделал как вы написали, но тоже совсем ничего не изменилось :(

    В инсталлере удалял кэш.
     
  4. mdss

    mdss ♖♘♗♕♔♗♘♖

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