Битрикс — Как получить данные из Highload-блока

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

Highload-блок как получить данные по ID элемента (битрикс)

Задача: получить название элемента H-блока, зная его ID и вывести на экран.
Решение:
1. Подключаем модуль iblock (либо же через проверку if смотрим подключен ли он в системе и выполняем код).
2. По ID элемента, из инфоблока 8, получаем разные параметры, в том числе и Бренд, который записан в свойстве с символьным кодом MANUFACTURER (которое, как мы видим, находится в самом последнем массиве, он же arSelect, PROPERTY_MANUFACTURER).
3. В $BRAND_ID записываем ID нашего элемента из справочника:

<?
CModule::IncludeModule("iblock");
$ID = $product->getId();
$my_elements = CIBlockElement::GetList (
	Array("ID" => "ASC"),
	Array("IBLOCK_ID" => 8, "ID" => $ID),
	false,
	false,
	Array('ID', 'NAME', 'CATALOG_GROUP_9', 'PROPERTY_MANUFACTURER')
);
if ($ar_fields = $my_elements->GetNext()) {
	$PRICE = $ar_fields['CATALOG_PRICE_9'];
	$BRAND_ID = $ar_fields['PROPERTY_MANUFACTURER_VALUE'];
}

if (CModule::IncludeModule('highloadblock')) {
	$arHLBlock = Bitrix\Highloadblock\HighloadBlockTable::getById(4)->fetch();
	$obEntity = Bitrix\Highloadblock\HighloadBlockTable::compileEntity($arHLBlock);
	$strEntityDataClass = $obEntity->getDataClass();
	$resData = $strEntityDataClass::getList(array(
		'select' => array('ID', 'UF_NAME'),
		'filter' => array('ID' => $BRAND_ID),
		'order'  => array('ID' => 'ASC'),
		'limit'  => 100,
	));
	if ($arItem = $resData->Fetch()) {
		$BRAND_NAME = $arItem['UF_NAME'];
	}
}
?>

4. После того как у нас есть ID бренда, необходимо найти его в хайлоад блоке. ID нашего хайлоад блока 4, обратите на это внимание в коде и замените на свой.
5. Осталось внести некоторые массивы с параметрами и получить значение $BRAND_NAME.
ВАЖНО — Свойство с именем называется UF_NAME, вместо привычного нам по обычным инфоблокам NAME.

Еще пара вещей на которые вам нужно обратить внимание:
— используется проверка if ($arItem =$resData… вместо while ($arItem = $resData … чтобы выбрать только один элемент
— ‘select‘ — массив выбора, ‘filter‘ — массив с фильтром аналогичный arFilter, ‘order‘ — массив с порядком, ‘limit‘ — ограничение по элементам

Если на вашем проекте необходимо вывести информацию из хайлоад блоков, обращайтесь ко мне за помощью

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *