Ниже рассматривается процесс вывода содержимого свойства типа «Привязка к разделам» на детальной странице элемента инфоблока. Несмотря на то, что данная процедура не выходит за рамки стандартного АПИ Битрикса, в некоторых случаях, реализация вывода может доставить некоторые сложности. К примеру, автор, встречал какие-то совершенно кастомные решения (вплоть до реализации на базе прямого запроса к БД (!!!)) на рабочих проектах.
Что представляет собой тип свойства «Привязка к разделам?»
Данное свойство связывает элемент текущего инфоблока с разделом иного инфоблока. В данном примере это связь элементов инфоблока «Услуги» и разделов инфоблока «Вопросы и ответы», где элемент «Вопросов и ответов» — это вопрос и ответ на него.
К слову, с этим свойством связан популярный баг, когда привязанный отдел не отображается, хотя на самом деле это не так (Это можно проверить, выведя просмотрев содержимое массива, связанное с данным свойством, например):
Как вывести содержимое данного свойства на детальной странице элемента?
Достаточно странно упоминать об этом, но если попробовать вывести содержимое свойства данного типа через «echo $arResult[‘DISPLAY_PROPERTIES’][‘Название_свойства’][‘VALUE’];», то получите вы только ID раздела связанного инфоблока. Как следствие, чтобы вывести в шаблон элемента содержимое, нужно воспользоваться CIBlockElement::GetList();
В данном примере используется вкрапления HTML, что, в данном случае необходимо для наглядности примера вывода. Собственно, вывод будет выглядеть следующим образом (предполагается, что мы хотим вывести содержимое в виде «заголовок» + «текст», без какой-либо верстки):
<? if($arResult['DISPLAY_PROPERTIES']['Название_Свойства']['VALUE']){ $arSelect = Array("PREVIEW_TEXT", "DETAIL_TEXT"); $arFilter = Array("IBLOCK_ID"=>32, "IBLOCK_SECTION_ID" => $arResult['DISPLAY_PROPERTIES']['Название_Свойства']['VALUE']); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect); while($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); ?> <h3><?=$arFields["PREVIEW_TEXT"];?></h3> <p><?=$arFields["DETAIL_TEXT"];?></p> <? } } ?>
В целом, это все: В результате данного кода в шаблон будет выведено содержимое данного свойства. В данном случае, это описание для анонса и детальное описание, которые выступают в данном примере вопросом и ответом на него. Если требуется вывести больше связанных данных, то нужно расширить массив $arSelect.