Битрикс: вывод свойств инфоблока
30 Декабря 2014

Битрикс: вывод свойств инфоблока

Инфоблоки в Битрикс - один из самых используемых модулей этой CMS. На ифоблоках можно реализовать широкий круг задач - от слайдера картинок, новостей до каталога товаров, услуг и всевозможных справочников.

Конечно, для многих задач стандартного функционала инфоблоков может не хватить. Часто требуется выводить дополнительные свойства. Одно или несколько сразу. Рассмотрим как справиться с этими задачами в каждом из случаев.

Вывод одиночного свойства инфоблока

Допустим, есть инфоблок, в нем создано свойство, которое имеет заданный код FEATURE. Чтобы вывести значение этого свойства, к примеру, в детальном описании новости, в шаблоне детальной новости bitrix:news.detail делаем следующую запись:

<?=$arResult["DISPLAY_PROPERTIES"]["FEATURE"]["VALUE"];?>

Чтобы вывести имя этого свойства:

<?=$arResult["DISPLAY_PROPERTIES"]["FEATURE"]["NAME"];?>

Вывод этих свойств с проверкой, чтобы не выводился лишний код, если значение свойства для элемента не задано:

<? if ($arResult["DISPLAY_PROPERTIES"]["FEATURE"]): ?>
	<?=$arResult["DISPLAY_PROPERTIES"]["FEATURE"]["NAME"]; ?>
	<?=$arResult["DISPLAY_PROPERTIES"]["FEATURE"]["VALUE"]; ?>
<? endif; ?>

Вывод свойств инфоблока по отдельности, если их много

Допустим, у инфоблока задано много разных свойств. И для нашего шаблона новости необходимо выводить их значения в разных местах. Мы знаем, что по умолчанию в Битрикс все свойства выводятся одно за другим в цикле, поэтому сложно из этого сделать какой-либо красивый дизайн.

Делаем все тоже самое, по аналогии с примером выше. К примеру, первое свойство с html версткой выводим выше в шаблоне, второе - ниже:

<!-- первое свойство -->
<? if ($arResult["DISPLAY_PROPERTIES"]["FEATURE"]): ?>
	<div class="wrapper-top">
		<div class="wrapper-top-name"><?=$arResult["DISPLAY_PROPERTIES"]["FEATURE"]["NAME"]; ?></div>
		<div class="wrapper-top-value"><?=$arResult["DISPLAY_PROPERTIES"]["FEATURE"]["VALUE"]; ?></div>
	</div>
<? endif; ?>

<!-- второе свойство -->
<? if ($arResult["DISPLAY_PROPERTIES"]["FEATURE"]): ?>
	<div class="wrapper-bottom">
		<div class="wrapper-bottom-name"><?=$arResult["DISPLAY_PROPERTIES"]["FEATURE"]["NAME"]; ?></div>
		<div class="wrapper-bottom-value"><?=$arResult["DISPLAY_PROPERTIES"]["FEATURE"]["VALUE"]; ?></div>
	</div>
<? endif; ?>

Не забудьте, что в настройках компонента должно быть включено использование нужных свойств.

Если требуется вывести html код из поля типа строка

Используя такую запись:

<?=$arResult["DISPLAY_PROPERTIES"]["FEATURE"]["VALUE"];?>

вы не получите должного результата, т.к. текст в ["VALUE"] храниться в обработанном функцией htmlspecialchars виде.

Обходим это просто заменяя ["VALUE"] на ["~VALUE"]:

<?=$arResult["DISPLAY_PROPERTIES"]["FEATURE"]["~VALUE"]; ?>

Комментарии

Использую в своей работе