Битрикс – Как получить данные из 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 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *