О web-разработке
и даже немного больше...

Использование highload-блоков в Bitrix

Highload-блоки появились в битрикс начиная с версии 14.0. Они ориентированы на создание более быстрых справочников, по сравнению с традиционными инфоблоками, которые были известны ранее пользователям битрикс. Highload-блоки реализованы в виде отдельного модуля, на новом ядре D7, структура данных этого модуля предполагает возможность использования в нагруженных проектах.
На самом деле между инфоблоками и highload-блоками нет ничего общего, а это значит, что средствами стандартного функционала администраторской части нет возможности перенести данные из инфоблоков в новую структуру. Однако при необходимости можно реализовать это, используя API битрикса, предварительно создав необходимую структуру для данных в highload.
Рассмотрим простые примеры, которые помогут вам начать использовать их в своих проектах.
Первое что следует сделать – это подключить модуль hightload, делается это традиционным методом, так:

CModule::IncludeModule("highloadblock");

Далее нам следует задать highload блок, с которым мы будем работать

$hlblock_id = 1;
$hlblock = Bitrix\Highloadblock\HighloadBlockTable::getById($hlblock_id)->fetch();
$entity = Bitrix\Highloadblock\HighloadBlockTable::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();

После этого мы можем работать с данными, добавлять новые, запрашивать, обновлять и удалять. В качестве первого примера мы попробуем добавить данные в highload-блок таким вот образом:

// массив полей для добавления в hightload-блок
$arAdd = array(
		'UF_SOURCE_ELEM_ID' => 12345,
		'UF_DEST_ELEM_ID' => 54321,
		'UF_SOURCE_URL' => '/catalog/avto/',
		'UF_DEST_URL' => '/avto/tovary/'
	);
$result = $entity_data_class::add($arAdd);

if ($result->isSuccess()){
	echo 'Запись добавлена успешно! ID записи: '. $result->getId();
} else {
	echo 'Не удалось добавить запись...';
}

Далее попробуем запросить некую запись, для этого есть метод getList, название которого возможно вам уже известно, и оно говорит само за себя. Данный метод выбирает поля из highload-блоков, согласно заданным параметрам. Рассмотрим следующий пример, попробуем запросить некоторые данные.

$rsData = $entity_data_class::getList(
		array(
			"select" => array("*"),
			"order" => array("ID" => "ASC"),
			"filter" => array('UF_SOURCE_URL' => $pageUrl)
		)
	);
	
if ($arData = $rsData -> Fetch()){
	echo '<pre>'; print_r ($arData); echo '</pre>';
}

Таким образом, мы передаем методу getList три параметра, первый «select» – указываем поля, которые следует выбрать (* — означает все поля), второй «order» — задает порядок сортировки, третий «filter» — фильтр, согласно которому будут отобраны данные.

Теперь попробуем обновить данные одной из записей в highload-блоке.

// массив полей для обновления
$arUpd = array(
		'UF_SOURCE_URL' => '/catalog/tv/',
		'UF_DEST_URL' => '/televizory/'
	);

$result = $entity_data_class::update($ID, $arUpd);

Обновляется запись в highload блоках методом update, который принимает два параметра: $ID – ID записи, $arUpd – массив полей, которые следует изменить.

Ну и на конец, попробуем удалить запись из hightload. Делается это ещё проще. Чтобы удалить запись, нам достаточно знать её ID, после чего мы передаем его методу Delete.

$entity_data_class::Delete($ID);
Опубликован: 03.12.2016 г.

См. также:

«Не удалось установить соединение с сервером. Проверьте …».
Получение Email-адреса покупателя в заказе (Bitrix D7)
Работа с URL-адресами в Bitrix D7
Работа с купонами в Bitrix API
Добавляем пункт меню для списков в админке Битрикс
Диалоговые окна в Bitrix API
Создание инфоблока при установке модуля
Создание копии корзины из заказа на Bitrix D7

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

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

Комментарии
  • Загрузка...
Друзья сайта