29.06.2017
Все можно отфильтровать.
Задача:
Вывести элементы компонентом news.list на странице детального просмотра catalog.section.
Нужно вывести только элементы, не меньше указанной цены на 300 руб. и не больше указанной цены на 300 руб. Т.е. товары из диапазона плюс/минус 300 руб. от текущей цены.
Цена заведена как обычное свойство, это не торговый каталог, а просто каталог с объектами не для магазина.
Для этого создаем следующий фильтр:
Можно задать еще больше свойств, следующим образом:
Не забываем указывать в коде компонента наш фильтр:
Количество показов: 2675
Список похожих элементов на детальной странице элемента в диапазоне его свойств
Иногда нужно вывести список похожих элементов на детальной странице элемента, но в диапазоне его свойств. Например, в 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",
Количество показов: 2675