Инфоблоки — это, наверное, самый используемый модуль. Ни один сайт на Битриксе не обходится без него. Это очень гибкий инструмент, но чтобы воспользоваться всей этой гибкостью, придётся хорошенько изучить API. Но официальная документация, как мы знаем, описывает не всё моменты
ЗадачаИ так, задача, которая встаёт перед каждым разработчиком, который использует информационные блоки — выбрать свойство(-а) элемента инфоблока и вывести его на экран. Первая половина дела банальна: метода класса CIBlockElement подробно описаны в документации. А вот со второй половиной (особенно, если свойство сложного типа) уже интереснее
Решение задачи Возьмём свойство типа «HTML\текст». Для этого свойства нельзя просто вывести его значение (ключ «VALUE»), т.к. это — массив, содержащий,«сырое» значений и его тип (HTML или текст). Нет, мы может, конечно, сами отформатировать «сырое» значение в соответствии с его типом, но в голову закрадывается сомнение — неужели это не реализовано в самой CMS? Как же работает с произвольными свойствами компонент bitrix:news?
Собственно, из кода этого самого bitrix:news мы и сможем узнать, как же он так хитро работает
А ничего хитрого-то, оказывается, и нет! Всего один вызов метода GetDisplayValue класса CIBlockFormatProperties:
$arResult['DISPLAY_PROPERTIES'][$pid] = CIBlockFormatProperties::GetDisplayValue($arResult, $prop, 'news_out'); |
И всё! Теперь в шаблоне мы можем писать так:
echo $element['PROPERTY_CODE']['DISPLAY_VALUE']; |
И любое свойство, тип которого предполагает форматирование значения перед выводом, будет соответствующим образом преобразовано!
Удачного изучение недокументированных функций системы