Сделав вынужденный перерыв в деятельности, связанной с разработкой под битрикс, автор настоящей заметки осознал на собственном опыте, что знания имеют свойство «вымываться». В том числе, казалось бы, сравнительно простые. Исходя из данного тезиса и родилась идея настоящей статьи. Как следствие, данная статья носит справочный характер и должна, по задумке автора, охватить максимально возможное число вариантов вывода свойств в шаблоне интернет-магазина на битриксе.
Логически, данную статью можно разделить на 2 части:
- Вывод свойств в catalog.section.list
- Вывод свойств в catalog.detail
Несмотря на то, что в примере рассматривается вывод свойств в компонентах каталога, данные примеры также справедливы и для других компонентов битрикса. Например, компонента новостей.
Обратите внимание, что перед выводом свойств нужно добавить свойство в настройках компонента каталога (в публичной части):
Вывод свойств в catalog.section.list
Вывод значения свойства:
<? echo $arItem['PROPERTIES']['TestProp']['VALUE'];?>
Вывод значения свойства с названием:
<? echo $arItem['PROPERTIES']['UF_KOD_BX24_ZAKAZ']['NAME'];?> <? echo $arItem['PROPERTIES']['UF_KOD_BX24_ZAKAZ']['VALUE'];?>
Вывод значения свойства типа html/text:
<? echo $arItem['PROPERTIES']['TestProp']['VALUE']['TEXT'];?>
Вывод свойства типа файл (как ссылка на скачивание):
<? $res = CIBlockElement::GetProperty($arItem['IBLOCK_ID'], $arItem['ID'], "sort", "asc", array("CODE" => "TestProp")); if ($ob = $res->GetNext()) { $testValue = $ob['VALUE']; $file = CFile::GetFileArray($testValue); $testValue = $file['SRC']; } echo '<a href="'.$testValue.'">TestProp</a>'; ?>
Вывод свойства типа файл (как изображение):
<? $res = CIBlockElement::GetProperty($arItem['IBLOCK_ID'], $arItem['ID'], "sort", "asc", array("CODE" => "TestProp")); if ($ob = $res->GetNext()) { $testValue = $ob['VALUE']; $file = CFile::GetFileArray($testValue); $testValue = $file['SRC']; } echo '<img src="'.$testValue.'">'; ?>
Вывод множественного свойства:
<?foreach($arItem["PROPERTIES"]["TestProp"]["VALUE"] as $TestProp):?> <?echo $TestProp;?><br> <?endforeach;?>
Вывод пользовательского свойства:
<? $select = [ "UF_BANNER_CATEG" ]; $sort = [ "SORT" => "ASC" ]; $filter = [ 'IBLOCK_ID' => 27, 'ID' => $arResult['SECTION']['ID'], ]; $rsResult = CIBlockSection::GetList( $sort, $filter, false, $select ); while($bResult = $rsResult->GetNext()) { $testValue = $bResult['UF_BANNER_CATEG']; $file = CFile::GetFileArray($testValue); echo '<img src="'.$file['SRC'].'">';; } ?>
Вывод свойства типа «привязка к элементам»:
<?foreach($arItem["PROPERTIES"]["TestProp"]["VALUE"] as $TestProp):?> <?$res = CIBlockElement::GetByID($TestProp);?> <?if($ar_res = $res->GetNext())?> <li><?=$ar_res["NAME"];?></li> <?endforeach;?>
Вывод свойств в catalog.detail
Вывод значения свойства:
<? echo $arResult['PROPERTIES']['UF_KOD_BX24_ZAKAZ']['VALUE'];?>
Вывод значения свойства с названием:
<? echo $arResult['PROPERTIES']['UF_KOD_BX24_ZAKAZ']['NAME'];?> <? echo $arResult['PROPERTIES']['UF_KOD_BX24_ZAKAZ']['VALUE'];?>
Вывод значения свойства типа html/text:
<? echo $arResult['PROPERTIES']['TestProp']['VALUE']['TEXT'];?>
Вывод свойства типа файл (как ссылка на скачивание):
<? $res = CIBlockElement::GetProperty($arResult['IBLOCK_ID'], $arResult['ID'], "sort", "asc", array("CODE" => "TestProp")); if ($ob = $res->GetNext()) { $testValue = $ob['VALUE']; $file = CFile::GetFileArray($testValue); $testValue = $file['SRC']; } echo '<a href="'.$testValue.'">TestProp</a>'; ?>
Вывод свойства типа файл (как изображение):
<? $res = CIBlockElement::GetProperty($arResult['IBLOCK_ID'], $arResult['ID'], "sort", "asc", array("CODE" => "TestProp")); if ($ob = $res->GetNext()) { $testValue = $ob['VALUE']; $file = CFile::GetFileArray($testValue); $testValue = $file['SRC']; } echo '<img src="'.$testValue.'">'; ?>
Вывод множественного свойства:
<?foreach($arResult["PROPERTIES"]["TestProp"]["VALUE"] as $TestProp):?> <?echo $TestProp;?><br> <?endforeach;?>
Вывод свойства типа «привязка к элементам»:
<?foreach($arResult["PROPERTIES"]["TestProp"]["VALUE"] as $TestProp):?> <?$res = CIBlockElement::GetByID($TestProp);?> <?if($ar_res = $res->GetNext())?> <li><?=$ar_res["NAME"];?></li> <?endforeach;?>
Как можно заметить, процесс вывода переменных на детальной странице и на странице списка отличается только названием переменной: $arResult и $arItem соответственно. Кажется, что данная заметка охватывает большую часть наиболее частотных примеров выводов тех, или иных свойств в компонентах битрикса (простые, файлы, множественные, пользовательские, привязка к эл-там). Более редкие примеры вывода описаны в справке битрикса.