Renderlife
6/22/2017 - 9:56 AM

get_section_array_param_from_detail_page.php

//Получаем корневую секцию и вытаскиваем три примущества
//Функция рекурсивно просматриват все категории к которым принадлежит товар до самой корневой
//Если находит информацию об одном из свойств которые переданы в параметре в виде массива
//выводит текстовое содержимое в масиив результата для дальнейшей распечатки в шаблоне!
function getGroupsFree($id, $type_el = TRUE, $type_info) {
	$text = [];
	if($type_el){
		$db_old_groups = CIBlockElement::GetElementGroups($id, true);
		while($ar_group = $db_old_groups->Fetch()) {
		    //Запрашиваем есть ли поле привязки, если нет то идем дальше
		    $ar_id_infoblock = CIBlockSection::GetList(array("SORT"=>"ASC"), array("IBLOCK_ID"=>2, "ID"=>$ar_group['ID'], '!'.$type_info =>"" ), false, $type_info);
			if($res = $ar_id_infoblock->Fetch()){
				foreach ($type_info as $key => $value) {
					if (isset($res[$value]) && !empty($res[$value])) {
						$text[$value] = $res[$value];
					}
				}
				if(empty($text)) {
			    	$text = getGroupsFree($ar_group['IBLOCK_SECTION_ID'], FALSE, $type_info);
			    }
			} else {
				$text = getGroupsFree($ar_group['IBLOCK_SECTION_ID'], FALSE, $type_info);
			}
		}
	} else {
		//Запрашиваем ещё раз подгруппу
		$ar_id_infoblock = CIBlockSection::GetList(array("SORT"=>"ASC"), array("IBLOCK_ID"=>2, "ID"=>$id, '!'.$type_info =>"" ), false, $type_info);
		if($res = $ar_id_infoblock->Fetch()){
			foreach ($type_info as $key => $value) {
				if (isset($res[$value]) && !empty($res[$value])) {
					$text[$value] = $res[$value];
				}
			}
			if(empty($text)) {
		    	$text = getGroupsFree($ar_group['IBLOCK_SECTION_ID'], FALSE, $type_info);
		    }
		}
	}
	return $text;
}
$arResult['ADVANTAGES'] = getGroupsFree($arResult['ID'], TRUE, array('UF_ADVANTAGES_1', 'UF_ADVANTAGES_2', 'UF_ADVANTAGES_3'));