И так по умолчанию компонент bitrix:catalog.section умеет сортировать только по одному из полей например по цене catalog_PRICE_1 или по наличию IS_AVAILABLE однако стоит отредактировать файл компонента /bitrix/components/bitrix/catalog.section/component.php А конкретно заменить строку
На
Он станет фильтровать по нескольким полям переданным в виде массива
Например: "ELEMENT_SORT_FIELD" => array("catalog_PRICE_1","IS_AVAILABLE",),
Однако сортировка этих самых полей останется $arParams["ELEMENT_SORT_ORDER"]
менять сортировку мне было без надобности но грамотные и так догадались куда копать дальше.
Код |
---|
$arSort = array( $arParams["ELEMENT_SORT_FIELD"] => $arParams["ELEMENT_SORT_ORDER"], "ID" => "DESC", ); |
На
Код |
---|
if(is_array($arParams["ELEMENT_SORT_FIELD"])): $arSort = array(); foreach($arParams["ELEMENT_SORT_FIELD"] as $field): $arSort[$field] = $arParams["ELEMENT_SORT_ORDER"]; endforeach; else: $arSort = array( $arParams["ELEMENT_SORT_FIELD"] => $arParams["ELEMENT_SORT_ORDER"], "ID" => "DESC", ); endif; |
Например: "ELEMENT_SORT_FIELD" => array("catalog_PRICE_1","IS_AVAILABLE",),
Однако сортировка этих самых полей останется $arParams["ELEMENT_SORT_ORDER"]
менять сортировку мне было без надобности но грамотные и так догадались куда копать дальше.