Добрый день! Давайте разберём, как вывести свойство инфоблока в шаблоне 1С-Битрикс.
Для начала уточню: задача может решаться по-разному в зависимости от того, где именно вы хотите вывести свойство — в шаблоне компонента (например, catalog, news, bitrix:news.list) или в произвольном месте шаблона сайта через API.
Рассмотрим основные варианты.
1. Вывод свойства в шаблоне компонента (через массив $arResult)
В большинстве компонентов, работающих с инфоблоками, свойства элементов доступны в массиве $arResult['PROPERTIES'] или $arResult['ITEMS'][N]['PROPERTIES'].
Пример для компонента bitrix:news.list (шаблон .default):
<?if ($arItem['PROPERTIES']['MY_PROPERTY']['VALUE']):?>
<p>Свойство: <?=$arItem['PROPERTIES']['MY_PROPERTY']['VALUE']?></p>
<?endif;?>
Структура массива PROPERTIES:
$arItem['PROPERTIES']['CODE']['VALUE']— значение свойства$arItem['PROPERTIES']['CODE']['DESCRIPTION']— описание свойства$arItem['PROPERTIES']['CODE']['VALUE_ENUM']— значение для списков (список)$arItem['PROPERTIES']['CODE']['VALUE_ENUM_ID']— ID варианта списка$arItem['PROPERTIES']['CODE']['PROPERTY_TYPE']— тип свойства (S, N, L, F, E, G и т.д.)
Для множественных свойств:
<?foreach ($arItem['PROPERTIES']['MY_MULTI_PROP']['VALUE'] as $value):?>
<p><?=$value?></p>
<?endforeach;?>
2. Вывод свойства элемента инфоблока в шаблоне сайта через API (CIBlockElement::GetList)
Если вы находитесь вне компонента (например, в header.php или footer.php), можно получить данные напрямую:
<?php
if (CModule::IncludeModule('iblock')) {
$arSelect = Array('ID', 'IBLOCK_ID', 'NAME', 'PROPERTY_MY_PROP');
$arFilter = Array('IBLOCK_ID' => 1, 'ACTIVE' => 'Y', 'ID' => $elementId);
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array('nTopCount' => 1), $arSelect);
if ($ob = $res->GetNextElement()) {
$arFields = $ob->GetFields();
$arProps = $ob->GetProperties();
echo 'Значение свойства: ' . $arProps['MY_PROP']['VALUE'];
}
}
?>
3. Вывод свойств через ORM (D7) — современный способ
<?php
use Bitrix\Iblock\Elements\ElementCatalogTable;
$element = ElementCatalogTable::getList([
'select' => ['ID', 'NAME', 'MY_PROPERTY_' => 'MY_PROPERTY.VALUE'],
'filter' => ['=ID' => $elementId]
])->fetch();
echo $element['MY_PROPERTY_VALUE'];
?>
Важно: Название поля свойства для ORM формируется как СИМВОЛЬНЫЙ_КОД_ПРОПЕРТИ.ПОЛЕ (например, PRICE.VALUE).
4. Вывод свойства раздела инфоблока
<?php
$arSection = CIBlockSection::GetList(
[],
['IBLOCK_ID' => $iblockId, 'ID' => $sectionId],
false,
['ID', 'NAME', 'UF_MY_PROPERTY'] // пользовательские поля раздела
)->Fetch();
echo $arSection['UF_MY_PROPERTY'];
?>
5. Вывод свойства инфоблока (настройки самого инфоблока)
Свойства самого инфоблока (его настройки) можно получить через:
<?php
$arIblock = CIBlock::GetByID($iblockId)->Fetch();
echo $arIblock['DESCRIPTION']; // описание инфоблока
// или пользовательские поля инфоблока:
$arIblock = CIBlock::GetArrayByID($iblockId);
echo $arIblock['UF_MY_FIELD'];
?>
6. Если свойство не выводится — проверьте
- Код свойства в настройках инфоблока (должен быть уникальным, латиница)
- В параметрах компонента должно быть установлено "Выводить свойства" = Да
- Свойство добавлено в
$arParams['PROPERTY_CODE']компонента - Для bitrix:news.list — параметр
PROPERTY_CODEдолжен содержать код вашего свойства
Подскажите, какой именно компонент вы используете и где хотите вывести свойство? Я смогу дать более точный пример кода.