Если у элемента каталога есть несколько категорий, иногда надо найти все родительские. Можно воспользоваться этим скриптом. В нем проверяется свойства всех категорий . Текущей товара и всех которые стоят выше по уровню.+ если товар находится сразу в нескольких категориях.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
function getPropertiSectionById($SECTION_ID , &$UF_DOSTAVKA_TAB, &$UF_POSHIV_TAB) { $rsSections = CIBlockSection::GetList($arSort, array('ID'=>$SECTION_ID ,'IBLOCK_ID' => 6,),false, array("ID","IBLOCK_ID","IBLOCK_SECTION_ID","NAME","DESCRIPTION","UF_*"),$arNavParams); while ($arSection = $rsSections->Fetch()) { // print_r($arSection['UF_DOSTAVKA_TAB']); if($arSection['UF_DOSTAVKA_TAB']==1) { $UF_DOSTAVKA_TAB=1; } if($arSection['UF_POSHIV_TAB']==1) { $UF_POSHIV_TAB=1; } $arResult["ITEMS"][]=$arSection; } } $UF_DOSTAVKA_TAB=0; $UF_POSHIV_TAB=0; $arSelect2 = Array("ID","NAME", "CODE"); $res = CIBlockElement::GetElementGroups($arResult['ID'], true , $arSelect2); while($ob = $res->Fetch()) { // print_r($ob); $SECTION_ID=$ob['ID']; $resSection = CIBlockSection::GetNavChain(false, $SECTION_ID); while ($arSection = $resSection->GetNext()) { $array_sections = $arSection; // echo '<br/>'.$arSection['ID'].' '.$arSection['NAME'].'<br/>'; //print_r($arSection); $SECTION_ID_PARRENT=$arSection['ID']; getPropertiSectionById($SECTION_ID_PARRENT ,$UF_DOSTAVKA_TAB, $UF_POSHIV_TAB); } } //} //echo $UF_DOSTAVKA_TAB; //echo $UF_POSHIV_TAB; $arResult["UF_DOSTAVKA_TAB"]=$UF_DOSTAVKA_TAB; $arResult["UF_POSHIV_TAB"]=$UF_POSHIV_TAB; |