Ответы пользователя по тегу PHP
  • Как вывести выбранные дополнительные поля для разных разделов в Битриксе?

    Golovina90
    @Golovina90 Автор вопроса
    Начинающий Web-Master
    Поправка. Решение нашлось!
    В catalog.section.list и почистить кэш
    <? //Блок вывода Доп полей в разделах
    $rsResult = CIBlockSection::GetList(array("SORT" => "ASC"), array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ID" =>$arResult["SECTION"]["ID"]), false, $arSelect = array("UF_TAGI")); 
    if($arSection = $rsResult -> GetNext())
        { 
    $uftag = $arSection["UF_TAGI"]; 
    
    if($uftag) {
    $arFilter = array('IBLOCK_ID' => 27,'ID' => $uftag);
    $rsItems = CIBlockSection::GetList(array(),$arFilter);
    echo '<div class="catalog-tags">';
    while ($arItem = $rsItems->GetNext())
      { 
    	  echo '<div class="catalog-tags-item"><a href="'.$arItem['SECTION_PAGE_URL'].'">'.$arItem["NAME"].'</a></div>';	
      }
     echo '</div>';
    	}
    }
    ?>

    Первый код выводит из Доп. полей (тип - Привязка к разделам инфоблока) выбранные разделы, которые относятся только к одной категории (т.е. не учитывает при этом значения админки, что в другом разделе отмечены другие пункты).
    А вот это код
    <?
    $IBLOCK_ID = 27; // ID нужного инфоблока
    
    //Получаем все возможные поля текущего пользователя
    $rsUser = CUser::GetByID($USER->GetID());
    $arUser = $rsUser->Fetch();
    
    //Выводим если множественное
    foreach ($arUser['UF_TAGI'] as $propertyUf):
        echo $propertyUf;
    endforeach;
    
    //Создаем массив фильтра
    $arFilter = array('IBLOCK_ID' => $IBLOCK_ID, 'ACTIVE' => 'Y');
    
    //Добавляем наш массив в котором перечислены ID разделов выбранные пользователем
    $sect_id = $fofilter;
    
    //Создаем массив фильтра. В конце переменная фильтра
    $arFilter = array('IBLOCK_ID' => $IBLOCK_ID, 'ACTIVE' => 'Y', 'ID' => $sect_id);
    
    //Создаем массив выводимых полей
    $arSelect = array('ID', 'NAME');
    
    //Применяем метод с фильтром и полями
    $rsSection = CIBlockSection::GetTreeList($arFilter, $arSelect);
    
    //Выводим названия разделов
    while ($arSection = $rsSection->Fetch()) {
        echo $arSection['NAME'];
    }
    
    foreach ($arUser['UF_TAGI'] as $propertyUf):
        $sectionsUser .= '\'' . $propertyUf . '\',';
    endforeach;
    
    eval('$fofilter=array(' . $sectionsUser . ');');
    extract($fofilter);
    
    ?>

    выводит всё подряд.
    Ответ написан