Допустим есть нас каталог, где есть элементы со свойствами. Как вывести каталог, это все понятно. Но если нам потребуется вывести на отдельной странице только элементы какого-либо раздела, да еще и отфильтровать их по свойству.
Главное думать в првильном направлении. Нам нужно перед выводом инфоблока создать фильтр, а самому инфоблоку казать, чтобы он слушался нашего фильтра.
В коде это выглядит так:
<?
$arrFilter = array("PROPERTY_ТУТ-НАШЕ-СВОЙСТВО" => "ТУТ-ЗНАЧЕНИЕ-СВОЙСТВА-НАПРИМЕР-ЦВЕТ-БЕЛЫЙ-ИЛИ-Т.-П."); // это наш фильтр для выборки по свойству
$APPLICATION->IncludeComponent(
"bitrix:catalog.section",
"template1",
Array(
"AJAX_MODE" => "N",
"IBLOCK_TYPE" => "xmlcatalog",
"IBLOCK_ID" => "14",
"SECTION_ID" => "104",
"SECTION_CODE" => "",
"SECTION_USER_FIELDS" => array(),
"ELEMENT_SORT_FIELD" => "sort",
"ELEMENT_SORT_ORDER" => "asc",
"FILTER_NAME" => "arrFilter", // вот тут мы оставляем так как есть "arrFilter", это указывает на то, что наш инфоблок будет обращать внимание на параметры для него заданные, а его самого мы написали впереди.
"INCLUDE_SUBSECTIONS" => "Y",
"SHOW_ALL_WO_SECTION" => "N",
"SECTION_URL" => "",
....... и т.д. и т.п.
)
);?>
Еще момент:
Не проверено, но если свойство предоставлено не в виде одной строки, а в виде списка, то нужно фильтр писать как VALUE, т.е. вот так:
$arrFilter = array("PROPERTY_ТУТ-НАШЕ-СВОЙСТВО_VALUE" => "ТУТ-ЗНАЧЕНИЕ-СВОЙСТВА-НАПРИМЕР-ЦВЕТ-БЕЛЫЙ-ИЛИ-Т.-П."); // это наш фильтр для выборки по свойству
Либо еще вот так:
<?
$GLOBALS['myAddFilter'] = array('PROPERTY_aktsii1' => '22');
$APPLICATION->IncludeComponent("bitrix:news.list", ".default", array(
"IBLOCK_TYPE" => "news",
"IBLOCK_ID" => "7",
"NEWS_COUNT" => "20",
"SORT_BY1" => "ACTIVE_FROM",
"SORT_ORDER1" => "DESC",
"SORT_BY2" => "SORT",
"SORT_ORDER2" => "ASC",
"FILTER_NAME" => "myAddFilter",
"FIELD_CODE" => array(
Фильтруем вывод news.list по ID элемента, на странице детального просмотра элемента, к которому они привязаны по свойству «Привяpка к элементам» с идентификатором BUY_WITH
<?
$GLOBALS['MyarrFilter']['ID'] = $arResult["PROPERTIES"]["BUY_WITH"]["VALUE"];
$APPLICATION->IncludeComponent("bitrix:catalog.section", "analog", array(
"IBLOCK_TYPE" => "catalog",
"IBLOCK_ID" => "7",
"SECTION_ID" => "",
"SECTION_CODE" => "",....
Битрикс все лучше и лучше совершенствует нашу логику или пытается заставить нас думать как он 🙂
Читать все статьи