Сортировка при сравнении

Тема в разделе "WebAsyst", создана пользователем Sergua, 23 авг 2011.

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

    Sergua Писатель

    Регистр.:
    18 авг 2011
    Сообщения:
    2
    Симпатии:
    0
    Подскажите, как изменить порядок сортировки при сравнении товаров?
    У меня при сравнении сортировка обратная той, которая в каталоге...
     
  2. dtvims

    dtvims Писатель

    Регистр.:
    4 авг 2011
    Сообщения:
    3
    Симпатии:
    1
    Сравнение производится в файлике
    \published\SC\html\scripts\modules\products\_metods\comparison_products.php
    Вот формирование списка продуктов в самом начале файла:
    PHP:
    $productIDArray explode" "trim(isset($PostVars["comparison_products"])?$PostVars["comparison_products"]:'') );
    $showProductCategoryPath true;
    $products = array();
    foreach( 
    $productIDArray as $_productID ){
    ...
    }
    Далее подгружаются только свойства продуктов.
    Шаблон для отображения smarty "comparison_products.html" погружается в конце скрипта.
    Собственно необходимо сделать сортировку массива $products, или сразу после его загрузки скриптом выше, или перед подгрузкой его в smarty, в зависимости от критерия сортировки.
    Сортировку можно осуществить функциями php:
    uasort — Sort an array with a user-defined comparison function and maintain index association
    uksort — Sort an array by keys using a user-defined comparison function
     
    Sergua нравится это.
  3. Sergua

    Sergua Писатель

    Регистр.:
    18 авг 2011
    Сообщения:
    2
    Симпатии:
    0
    Спасибо, мучился 2 дня, но получилось!
    Нужно в самом низу указанного выше файла, перед четырьмя $smarty вставить:
    PHP:
    function cmp($x$y

    if ( 
    $x[sort_order] == $y[sort_order] ) 
    return 
    0
    else if ( 
    $x[sort_order] < $y[sort_order] ) 
    return -
    1
    else 
    return 
    1
    }  
    usort($productscmp);
    если Вы хотите сортировать по "порядку сортировки" если хотите сортировать по названию то вместо [sort_order] нужно написать [name_ru] и т.д.