Вывод СВОЙСТВ из инфоблока в 1С-БИТРИКС
В данном уроке разберем, как добавлять свои свойства к инфоблоку, и выводить их на страницу сайта в CMS 1С-Битрикс.
Практически вся информация отображаемая на сайте представлена при помощи компонентов, с помощью их мы выводим информацию из БД, тех же инфоблоков, и отображаем ее на странице.
Но одно дело когда есть уже какие то данные и они отображаются на сайте, а другое дело когда мы хотим, добавит новую информацию которой нет. И давайте на простой пример тех же Характеристик разберем как это делается.
На сайте имеются категории с товарами, в карточке каждого элемента перечислены различные характеристики которыми он обладает. Но для нас допустим этого не достаточно, нам не хватает такой характеристики как «Каркас мебели». Мебель бывает из разного каркаса, металлические, деревянные и нам нужно эту характеристику отобразить в карточке продукта.
Добавление свойств в Инфоблок
Что бы добавить ее к элементу, необходимо в первую очередь создать само свойство в инфоблоке, которое в дальнейшем нужно заполнить в карточке товара. Для этого переходим в настройки инфоблока «Продукция», в которую будем добавлять характеристику. Открываем вкладку « Свойства », и тут видим все характеристики, которыми обладает инфоблок.
Ниже создаем новое свое свойство, в колонке название прописываем «Каркас», тип оставляем «Строка», сортировку можно сделать 900, и обязательно прописываем символьный код «CARCASS». Код может быть произвольным, обязательно пропишите его на латинице заглавными буквами и самое главное, чтобы он был уникальный, не повторялся с другими в этой колонке.
Жмем сохранить, затем переходим в любой из элементов, и заполняем в нем новую характеристику, прописываем в ней «Деревянный».
Переходим в визуальную часть, откроем страницу с данным элементом, но как видим свойство, которое добавляли в инфоблок, тут не отображается. И причина эта в том, что текущее свойство у нас, не попадает в массив $arResult , который является результатом работы компонента. Более детально как работать с массивом мы познакомимся в одном из уроков курса, а тут откроем настройки и посмотрим, установлено ли данное свойство внутри компонента.
В режиме визуальной правки, наводим на область компонента, появляется его меню, жмем на шестеренку. Отображается форма с параметрами компонента. Так как мы настраиваем детальный просмотр элемента, то нас интересует пункт «Настройки детального просмотра», жмем на нее. Как видим, в этом пункте перечислены свойства, которыми обладает инфоблок.
С зажатым CTRL выделяем то, которое ранее мы добавляли «Каркас». Если свойство тут не отображается, тогда вам нужно в поле снизу, вписать символьный код вручную. Обязательно вписываете в том регистре, в котором создавали его в инфоблоке и оно появится в массиве $arResult.
Затем жмем сохранить настройки компонента.
Обновилась страница, как видим, свойство отобразилось в карточке элемента, внутри блока характеристик.
Таким образом, если вам необходимы новые свойства, можно добавлять их так к элементам.
Как видите, вся информация задается довольно просто и выводится компонентами. Компоненты это основной инструмент разработчика, при помощи их мы достаем данные из инфоблоков, проводим с ними логические манипуляции, и затем отображаем результат работы на странице сайта, уже в том виде как нам нужно.
Более детально о компонентах, как с ними работать, программировать свою логику, изменять шаблон вывода информации, я рассказываю в своем курсе, который скоро появится.
Как вывести свойства инфоблока по отдельности и немного плюшек не в тему
Чтобы вывести и название и значение свойства есть вариант:
//если не пустое //вывести название //и значение ?>
Чтобы вывести ссылку:
Чтобы вывести свойство типа строка в режиме html:
Что бы вевести свойство типа html/text:
Свойство список в виде select
Множественное свойство типа список:
Вывести список связанных элементов со свойством привязка к элементам в виде списка
Вывести свойство файл-изображение как изображение а не ссылку на загрузку:

Изображение торгового предложения
">
Свойство типа файл с ссылкой на загрузку файла
Вывести множественное свойство типа файл, со всей информацией о файле: размер, название, транслитированное название, тип файла- в отдельной заметке.
Вывести колличество комментариев к элементу в списке новостей битрикс:
=(strlen($arItem["PROPERTIES"]["FORUM_MESSAGE_CNT"]["VALUE"]) >0 ? $arItem["PROPERTIES"]["FORUM_MESSAGE_CNT"]["VALUE"] : "0");?>
Вывести и отресайзить детальную картинку товара знаная ID товара (или элемента)
GetNext()) < $img = CFile::ShowImage($ar_res["DETAIL_PICTURE"], 50, 50, "border=0", "", true);>?>
Немного не в тему но может пригодиться: вывести колличество просмотров элемента инфоблока (с новостями точно работает):
// К парметру вывода компанента добавить: "LIST_FIELD_CODE" => array(0=>"SHOW_COUNTER",1=>"",), "DETAIL_FIELD_CODE" => array(0=>"SHOW_COUNTER",1=>"",), // В нужном месте шаблона вставить - для списка новостей - для детальной новости
Немного костыльный, но однако способ: как вывести ссылку на детальный просмотр и изображение связанного элемента каталога. Для примера, имеем инфоблок с товарами и инфоблок с брендами. Нужно на странице бренда вывести все связанные элементы с ссылкой на детальный просмотр и картинку товара.
0):?> Товары этого бренда в нашем каталоге:
//это ссылка на детальный просмотр «>
//это картинка превью товара GetNext()) echo CFile::ShowImage($ar_res[‘PREVIEW_PICTURE’], 200, 200, «border=0», «», true); ?>
Свойство привязка к Google карте
IncludeComponent("bitrix:map.google.view", ".default", array( "INIT_MAP_TYPE" => "MAP", "MAP_DATA" => serialize(array( 'google_lat' => $arPos[0], 'google_lon' => $arPos[1], 'google_scale' => 13, 'PLACEMARKS' => array ( array( 'TEXT' => $arProperty["СВОЙСТВО_ГОРОД"]["VALUE"].", ".$arProperty["СВОЙСТВО_АДРЕС"]["VALUE"], 'LON' => $arPos[1], 'LAT' => $arPos[0], ), ), )), "MAP_WIDTH" => "600", "MAP_HEIGHT" => "600", "CONTROLS" => array( "SMALL_ZOOM_CONTROL", "SCALELINE" ), "OPTIONS" => array( "ENABLE_SCROLL_ZOOM", "ENABLE_DBLCLICK_ZOOM", "ENABLE_DRAGGING", "ENABLE_KEYBOARD" ), "MAP_ID" => "" ), false );?>
Вывести любое множественное свойство:
Вывести теги с отправкой на страницу поиска
Вывести теги с отправкой на страницу поиска
'.$value.' '; endforeach; ?>
Вывести дату создания элемента в правильном формате «22 января 2015»
Вывести количество просмотров элемента инфоблока. Если просмотров нет, вывести 0
0):?> 0
Вывести количество комментариев к элементу инфоблока. Если просмотров нет, вывести 0
0):?> 0
Вывести путь к файлу из пользовательского поля раздела инфоблока в catalog.section.list
Для этого создаем два пользовательских поле типа Файл и даем им коды UF_FILE и UF_SECOND_FILE. В шаблоне catalog.section.list создаем файл result_modifier.php с содержимым:
$db_list = CIBlockSection::GetList(Array($by=>$order), $arFilter = Array("IBLOCK_ID"=>$arParams["IBLOCK_ID"], "ID"=>$arResult['SECTIONS']), true, $arSelect=Array("UF_FILE", "UF_SECOND_FILE")); while($ar_result = $db_list->GetNext())
В нужном месте шаблона catalog.section.list выводим пути к этим файлам (могут быть картинкой, файлом, чем угодно)
$arResult['UF_FILE'][$arSection['ID']]; $arResult['UF_SECOND_FILE'][$arSection['ID']];
Андрей 31.08.2022
Подскажите, пожалуйста, как вывести отдельное свойство инфоблока, у которого несколько значений должны быть разделены запятой
Михаил Базаров 31.08.2022
| Цитата |
|---|
| Андрей написал: Подскажите, пожалуйста, как вывести отдельное свойство инфоблока, у которого несколько значений должны быть разделены запятой |
Если правильно понял вопрос:
Гость 01.09.2022
| Цитата |
|---|
| echo implode(‘, ‘, $arResult[‘DISPLAY_PROPERTIES’][‘ВАШЕ_СВОЙСТВО’][‘VALUE’]); ?> |
Супер! То что надо, спасибо!
Гость 08.12.2022
Михаил, добрый день!
Подскажите, пожалуйста, как в общем списке выделить отдельное свойство элемента цветом?
Андрей 08.12.2022
Уточнение к предыдущему вопросу
Как сделать, чтобы отдельное свойство элемента в общем списке выводилось определенным цветов (или курсивом)
Имеется ввиду и имя и значение (и [NAME] и [DISPLAY_VALUE])
Михаил Базаров 08.12.2022
| Цитата |
|---|
| Андрей написал: Уточнение к предыдущему вопросу Как сделать, чтобы отдельное свойство элемента в общем списке выводилось определенным цветов (или курсивом) Имеется ввиду и имя и значение (и [NAME] и [DISPLAY_VALUE]) |
GetProperty
Метод возвращает значения свойства для элемента element_id. Метод статический.
Смотрите также
Параметры вызова
- id — код свойства;
- sort — индекс сортировки;
- name — имя свойства;
- active — активность свойства;
- value_id — код значения свойства;
- enum_sort — индекс сортировки варианта списочного свойства;
- asc — по возрастанию;
- desc — по убыванию;
Примечание: параметр не должен быть false, иначе метод отработает неправильно и результат не будет отобран по заданным критериям.
- NAME — название свойства (можно использовать маску %|_),
- ID — код свойства,
- ACTIVE — активность (Y|N),
- SEARCHABLE — участвует в поиске или нет (Y|N),
- PROPERTY_TYPE — тип свойства,
- CODE — символьный код свойства,
- EMPTY — пустота свойства (Y|N).
Примечание — Существуют ещё параметры, оставленные для сохранения совместимости: $by и $order .
Возвращаемое значение
Возвращается объект CDBResult, содержащий поля свойств и поля со значениями:
PROPERTY_VALUE_ID — код значения свойства,
VALUE — значение свойства,
DESCRIPTION — описание значения свойства,
VALUE_ENUM — текстовое значение элемента списочного свойства,
VALUE_XML_ID — внешний код значения свойства типа «список».
Примеры использования
$db_props = CIBlockElement::GetProperty($PRODUCT_IBLOCK_ID, $PRODUCT_ID, array("sort" => "asc"), Array("CODE"=>"FORUM_TOPIC_ID"));
if($ar_props = $db_props->Fetch())
$FORUM_TOPIC_ID = IntVal($ar_props["VALUE"]);
else
$FORUM_TOPIC_ID = false;
?>
Пример 2 (получить значения для множественного свойства):
$VALUES = array(); $res = CIBlockElement::GetProperty(IKSO_CUSTOM::$IBLOCKS[‘brands’], $BRAND_ID, «sort», «asc», array(«CODE» => «BRAND_CLASS»)); while ($ob = $res->GetNext())
Пример 3 (получить значения для немножественного свойства):
$res = CIBlockElement::GetProperty(IKSO_CUSTOM::$IBLOCKS[‘brands’], $BRAND_ID, «sort», «asc», array(«CODE» => «BRAND_CLASS»)); if ($ob = $res->GetNext())
Если значений у свойства нет и в фильтр не передается «EMPTY»=>»N», то метод вернет массив с с пустым ключом VALUE:
//используются Инфоблоки 2.0 $db_props = CIBlockElement::GetProperty(30, 14391, "sort", "asc", Array("CODE"=>"XXX")); // XXX - множественное свойства типа "Строка" if($ar_props = $db_props->Fetch()): echo "".print_r($ar_props, true).""; endif;
Если нужно получить имена значения типа список
? $res = CIBlockElement::GetProperty(ID_BLOKA, ID_ELEMENTA, array("sort" => "asc"), Array("CODE"=>"CATEGORIES")); while ($ob = $res->GetNext()) < $prop = $ob['VALUE_ENUM']; echo $prop. ""; > ?
Новинки документации в соцсетях:
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.
Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
Сергей Мостовой 16.02.2022 13:31:55
Вывести Артикул товара, где CML2_ARTICLE код свойства в инфоблоке
Артикул: ?>
crazydrummer 10.05.2021 21:08:53
Получаем все поля и свойства в удобном для дальнейшего вывода формате
public static function getIblockElement($iblockElementId) < $arOrder = []; $arFilter = ['ID' =>$iblockElementId]; $arGroupBy = false; $arNavStartParams = false; $arSelectFields = ['ID', '*']; $dbRes = \CIBlockElement::GetList( $arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelectFields ); $element = $dbRes->Fetch(); $propsDbres = \CIBlockElement::GetProperty($element['IBLOCK_ID'], $iblockElementId, "sort", "asc", array(">ID" => 1)); $i = 0; while ($prop = $propsDbres->GetNext()) < $i = !isset($element['PROPS'][$prop['CODE' ]]) ? 0 : $i+1; $element['PROPS'][$prop['CODE']]['NAME'] = $prop['NAME']; $element['PROPS'][$prop['CODE']]['TYPE'] = $prop['PROPERTY_TYPE']; $element['PROPS'][$prop['CODE']]['ACTIVE'] = $prop['ACTIVE']; $element['PROPS'][$prop['CODE']]['VALUES'][$i] = [ 'VALUE' =>$prop['VALUE'], 'DESCRIPTION' => $prop['DESCRIPTION'], ]; if ($prop['PROPERTY_TYPE'] == 'F') $element['PROPS'][$prop['CODE']]['VALUE'][$i]['PATH'] = \CFile::GetPath(intval($prop['VALUE'])); > return $element; >
stvbox 19.11.2012 13:15:36
Третий параметр метода не должен быть false. Не правильно происходит перегрузка функции и результат - все подряд, вместо отобранного по необходимым критериям.
Сергей Фролов 02.12.2011 17:18:50
Если нужно получить значение типа список
$db_props = CIBlockElement::GetProperty($PRODUCT_IBLOCK_ID, $PRODUCT_ID, array("sort" => "asc"), Array("CODE"=>"FORUM_TOPIC_ID")); if($ar_props = $db_props->Fetch()) $property_enums = CIBlockPropertyEnum::GetList(Array("DEF"=>"DESC", "SORT"=>"ASC"), Array("IBLOCK_ID"=>$IBLOCK_ID, "ID"=>$ar_props["VALUE"])); while($enum_fields = $property_enums->GetNext())
PetrW 03.02.2009 20:20:24
$db_props = CIBlockElement::GetProperty($PRODUCT_IBLOCK_ID, $PRODUCT_ID, "sort", "asc", Array("CODE"=>"FORUM_TOPIC_ID"));
Возможно еще так:
$db_props = CIBlockElement::GetProperty($PRODUCT_IBLOCK_ID, $PRODUCT_ID, Array("sort"=>"asc"), Array("CODE"=>"FORUM_TOPIC_ID"));
Как получить свойства элемента инфоблока?

пятый параметр в CIBlockElement::GetList() посмотрите в документации, там есть примеры.
- $obElement - это не obElement, то есть не "элемент с типом 'объект'". Там экземпляр класса CIBlockResult , его в основном обозначают как $res.
- у Вас какой-то странный фильтр, в него зачем-то запихана сортировка. Насколько помню внутреннее устройство CIBlockElement::GetList(), всё это игнорируется как мусор. Есть же $arOrder, используйте его.
- моё имхо: хоть венгерская нотация и принята в Битриксе, но тянется это с глубокой древности, применяется ошибочно и поэтому смысла не имеет.
Ответ написан более года назад
Комментировать
Нравится Комментировать
Антон @anton99zel Куратор тега 1С-Битрикс
29а класс средней школы №7
$arFilter = Array( "ID" => УКАЖИ, "IBLOCK_ID"=>УКАЖИ, "IBLOCK_SECTION_ID" => $arResult["ID"], ); $arSelect = Array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM","PROPERTY_CODE"); $res = CIBlockElement::GetList(Array("SORT"=>"ASC"), $arFilter, false, Array("nPageSize"=>50), $arSelect); while($ob = $res->GetNextElement())< $arFields = $ob->GetFields(); print_r($arFields); $arProps = $ob->GetProperties(); print_r($arProps); >
Ответ написан более года назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- 1С-Битрикс
Можно ли переименовать название стандартной подписи поля «Название» для инфоблока?
- 1 подписчик
- 10 часов назад
- 16 просмотров
