Добрый день. Нужно сделать в каталоге сортировку одновременно по трем полям: цена, наличие товара и наличие фото. То есть сначала должны выводится товары с фото и в наличии, отсортированные по цене. Сейчас используется сортировка по двум полям - наличие и цена,
$arParams["ELEMENT_SORT_FIELD"] = 'CATALOG_QUANTITY';
$arParams["ELEMENT_SORT_ORDER"] = "desc";
и
$arParams["ELEMENT_SORT_FIELD2"] = "CATALOG_PRICE_1";
$arParams["ELEMENT_SORT_ORDER2"] = "asc";
соответственно.
Но когда я добавляю сортировку для наличия картинок -
$arParams["ELEMENT_SORT_FIELD3"] = 'HAS_DETAIL_PICTURE';
$arParams["ELEMENT_SORT_ORDER3"] = "desc";
ничего не происходит. Как добавить третий вариант сортировки??
Наиболее похожее решение, что я нашел - это .
Не пойму, в какое место в файле component.php дописывать строки?
$arParams["ELEMENT_SORT_FIELD"] = 'CATALOG_QUANTITY';
$arParams["ELEMENT_SORT_ORDER"] = "desc";
и
$arParams["ELEMENT_SORT_FIELD2"] = "CATALOG_PRICE_1";
$arParams["ELEMENT_SORT_ORDER2"] = "asc";
соответственно.
Но когда я добавляю сортировку для наличия картинок -
$arParams["ELEMENT_SORT_FIELD3"] = 'HAS_DETAIL_PICTURE';
$arParams["ELEMENT_SORT_ORDER3"] = "desc";
ничего не происходит. Как добавить третий вариант сортировки??
Наиболее похожее решение, что я нашел - это .
Не пойму, в какое место в файле component.php дописывать строки?
| Код |
|---|
Сортировать товары в каталоге по нескольким свойствам.Решение:
Копируем компонент catalog.section
Дописываем новые параметры в файл .parameters.php'ELEMENT_SORT_FIELD3' => array(
'PARENT' => 'DATA_SOURCE',
'NAME' => GetMessage('IBLOCK_ELEMENT_SORT_FIELD3'),
'TYPE' => 'LIST',
'VALUES' => $arSort,
'ADDITIONAL_VALUES' => 'Y',
'DEFAULT' => 'id',
),
'ELEMENT_SORT_ORDER3' => array(
'PARENT' => 'DATA_SOURCE',
'NAME' => GetMessage('IBLOCK_ELEMENT_SORT_ORDER3'),
'TYPE' => 'LIST',
'VALUES' => $arAscDesc,
'DEFAULT' => 'desc',
'ADDITIONAL_VALUES' => 'Y',
),
В файле component.php дописываем прием новых параметров сортировки:
if (empty($arParams['ELEMENT_SORT_FIELD3']))
$arParams['ELEMENT_SORT_FIELD3'] = 'id';
if (!preg_match('/^(asc|desc|nulls)(,asc|,desc|,nulls){0,1}$/i', $arParams['ELEMENT_SORT_ORDER3']))
$arParams['ELEMENT_SORT_ORDER2'] = 'desc';и тут:$arSort = array(
$arParams['ELEMENT_SORT_FIELD'] => $arParams['ELEMENT_SORT_ORDER'],
$arParams['ELEMENT_SORT_FIELD1'] => $arParams['ELEMENT_SORT_ORDER1'],
$arParams['ELEMENT_SORT_FIELD2'] => $arParams['ELEMENT_SORT_ORDER2'],
$arParams['ELEMENT_SORT_FIELD3'] => $arParams['ELEMENT_SORT_ORDER3'],
);
Подключаем кастомный компонент и настраиваем сортировку. |