Блог специалистов
29.06.2017

Список похожих элементов на детальной странице элемента в диапазоне его свойств

Иногда нужно вывести список похожих элементов на детальной странице элемента, но в диапазоне его свойств. Например, в catalog.section или news.list.

Все можно отфильтровать.

Задача:
Вывести элементы компонентом news.list на странице детального просмотра catalog.section.
Нужно вывести только элементы, не меньше указанной цены на 300 руб. и не больше указанной цены на 300 руб. Т.е. товары из диапазона плюс/минус 300 руб. от текущей цены.
Цена заведена как обычное свойство, это не торговый каталог, а просто каталог с объектами не для магазина.


Для этого создаем следующий фильтр:
<? $idisel = $arResult["ID"]; //ID текущего элемента $cenamin = $arResult["PROPERTIES"]["CENA"]["VALUE"]-300; // Берем цену и вычитаем из нее 300 руб. Т.е. задаем минимальную цену выводимых товаров. $cenamax = $arResult["PROPERTIES"]["CENA"]["VALUE"]+300; // Берем цену и приплюсовываем к ней 300 руб. Т.е. задаем максимальную цену выводимых товаров. global $arFilter; $arFilter = array( "!ID"=>$idisel, // исключаем элемент, на странице которого мы находимся, чтобы он не выводился array( "LOGIC" => "AND", // логика фильтра "и". Можно задать логику "или" (OR), если условия нужны какие-либо другие array(">PROPERTY_CENA" => $cenamin), // все, что больше минимальной цены и array("<PROPERTY_CENA" => $cenamax), // все, что меньше максимальной цены. ), ); $APPLICATION->IncludeComponent( "bitrix:news.list", ..... "FILTER_NAME" => "arFilter", .....
Можно задать еще больше свойств, следующим образом:
"LOGIC" => "OR", array("<PROPERTY_RADIUS" => 50, "=PROPERTY_CONDITION" => "Y"), array(">=PROPERTY_RADIUS" => 50, "!=PROPERTY_CONDITION" => "Y"),
Не забываем указывать в коде компонента наш фильтр:
"FILTER_NAME" => "arFilter",

Количество показов: 2511




Возврат к списку