Иногда бывает часто стоит следующая задача:
Есть инфоблок №1 с товарами и у этого инфоблока есть дополнительное свойство, к примеру COLOR, в параметрах которого указано “Привязка к элементам другого инфоблока”, где указан инфоблок №2. В инфоблоке №2 в качестве элементов у нас хранится название цветов и его HEX код. В качестве названия цвета используется стандартное поле, а для хранения кода HEX создано дополнительное свойство в этом инфоблоке с типом “строка”. Чтобы вывести в шаблоне свойство HEX второго инфоблока, нужно сделать примерно так:
1 2 3 4 |
<? $arColor = GetIBlockElement($arResult["PROPERTIES"]["COLOR"]["VALUE"]); echo $arColor["PROPERTIES"]["HEX"]["VALUE"]; ?> |
UPDATE 18/12/2013: Описанный выше код использует устаревшие API функции и применим только в шаблоне, когда вызов нужного инфоблока прошел. Ниже предлагаю код, которые делает тоже самое, но содержит все необходимые вызовы последовательно. Инфоблок “Издания” связан с инфоблоком Авторы (множественная привязка).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
//Вытаскиваем свойства инфоблока Издания (ID=6) $arBookElement = CIBlockElement::GetProperty(6, $arBasket["PRODUCT_ID"], Array("sort"=>"asc"), Array("CODE"=>"AUTHORS")); while ($arBookProp = $arBookElement->GetNext()) { //Вытаскиваем ID элемента Автора по привязки XML_ID с Изданиями $arAuthorsItems = CIBlockElement::GetList(Array("ID"=>"ASC"), Array('IBLOCK_ID'=>5,'XML_ID'=>$arBookProp["VALUE"]),false,false,Array("ID","DETAIL_PAGE_URL")); while ($arAuthorItem = $arAuthorsItems->GetNext()) { // Вытаскиваем свойства автора $authorProp = CIBlockElement::GetProperty(5, $arAuthorItem["ID"], Array("sort" => "asc"), Array("CODE"=>"SHORT_NAME")); if($authorShortName = $authorProp->Fetch()) { echo "<p><a href='".$arAuthorItem["DETAIL_PAGE_URL"]."' target='_blank'>".$authorShortName["VALUE"]."</a></p>"; } } } |
PS: Возможно есть вариант проще, но на скорую руку удалось сделать только так.