bitrix

Настраиваем фильтр по категориям

Часть 2: как запилить привязку каждого элемента к собственной секции.

в первой части мы сформировали хайлоад блок для всех секций для формирования справочника к которому будет иметь привязку каждый элемент инфоблока.

$arSelect = Array("ID", "IBLOCK_ID", 'IBLOCK_SECTION_ID',"PROPERTY_SECTION");//IBLOCK_ID и ID обязательно должны быть указаны
$arFilter = Array("IBLOCK_ID"=>$iblock_ID, "ACTIVE"=>"Y",'!PROPERTY_SECTION'=>false);
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect);
while($ob = $res->GetNextElement()) {
    $arFields = $ob->GetFields();
    //получим код секции по её ID
    $res_section = CIBlockSection::GetByID($arFields['IBLOCK_SECTION_ID']);
    if($ar_res_section = $res_section->GetNext()){
        $cur_section_code = $ar_res_section['CODE'];
        // Установим новое значение для данного свойства данного элемента
        //Если передаётся массив "свойство"=>"значение", то в качестве значения свойств типа "справочник" нужно указывать внешний код элемента справочника.
        CIBlockElement::SetPropertyValuesEx($arFields['ID'], $iblock_ID, array('SECTION' => $cur_section_code));
    }
//    $arProps = $ob->GetProperties();
//    pre2($arProps);
}

Leave a reply