Добавим к стандартным полям сортировки, в нашем случае "кол-во просмотров, т.е. популярность - shows", свои сортировки, созданные на свойствах элемента - PRIORITET - если хотим поднять элемент выше в списке и NOSKLAD - если хотим убрать товары, отсутствующие на складе - ниже. Отображать не будем, но будем учитывать:
$arSort = array("PROPERTY_NOSKLAD"=>"ASC", "PROPERTY_PRIORITET"=>"DESC", "shows"=>"DESC");
if (
isset($_GET["sort"]) && isset($_GET["method"]) && (
$_GET["sort"] == "name" ||
$_GET["sort"] == "catalog_PRICE_1" ||
$_GET["sort"] == "shows" ||
$_GET["sort"] == "created")){
$arSort = array($_GET["sort"]=>$_GET["method"]);
}
В итоге в компонент или используя api, можно передавать массив, описывающий направления и параметры сортировки .
$res = CIBlockElement::GetList($arSort, Array($arrFilter, $arFilter), false, Array("bShowAll"=>false, "nPageSize"=>18, "iNumPage"=>$pn), $arSelect);