Обновление HL записи инфоблока
При создании языковых версий битрикс сайта возникла необходимость часть общего контента, который не переводится, но от него зависит функционал, вынести как-то хранение отдельно чтобы изменения в основной версии сайта автоматически менялись у других. В результате было принято решение хранить такие данные в Highload-справочнике.
Привязку к элементам инфоблоков делал на базе символьного кода элемента, так как на разных языковых версиях сайта это уникальное значение. В XML_ID Highload-справочника храним значение символьного кода, по которому будем искать обновляемый элемент.
Далее возникает задача обновления таких данных при внесении изменений. Решаем такую задачу с помощью обработчика в файле init.php скачать рабочий пример
Код обработчика обновления HL записи инфоблока
// регистрируем обработчик обновления записей кода камеры на иностранных версиях сайтов
AddEventHandler(«iblock», «OnAfterIBlockElementUpdate», Array(«upHighload», «OnAfterIBlockElementUpdateHandler»));
class upHighload
{
// создаем обработчик события «OnAfterIBlockElementUpdate»
function OnAfterIBlockElementUpdateHandler(&$arFields)
{
if(!$arFields[«RESULT»]) return false;
If($arFields[‘IBLOCK_ID’] == 17) { //инфоблок камер русской версии
$hl_code =$arFields[‘CODE’]; //Символьный код элемента
//Подготовка: по символьному коду получаем ID записи справочника
CModule::IncludeModule(‘highloadblock’);
$hlblock = HL\HighloadBlockTable::getById(1)->fetch(); // Вместо 2 подставьте id highload блока
$entity = HL\HighloadBlockTable::compileEntity($hlblock);
$entityClass = $entity->getDataClass();
$res = $entityClass::getList(array(
‘select’ => array(‘*’),
‘filter’ => array(‘UF_XML_ID’ =>$hl_code) //внешний код значения справочника
));
$row = $res->fetch();
//получаем ID записи справочника
$hl_id=$row[‘ID’];
//Обновление:
$hl_name =$arFields[‘NAME’];
$hl_code =$arFields[‘CODE’];
CModule::IncludeModule(‘iblock’);
//Получаем код камеры
$res_code = CIBlockElement::GetProperty(17, $arFields[«ID»], array(«sort» => «asc»), Array(«CODE»=>»code»));
while ($ob_code = $res_code->GetNext()) {
$one_code = $ob_code[‘~VALUE’];
}
//Получаем да/нет о работе камеры
$res_work = CIBlockElement::GetProperty(17, $arFields[«ID»], array(«sort» => «asc»), Array(«CODE»=>»works»));
while ($ob_work = $res_work->GetNext()) {
$one_work = $ob_work[‘VALUE_ENUM’];
// AddMessage2Log($ob_work);
}
Loader::includeModule(«highloadblock»);
$hlbl = 1; // Указываем ID нашего highloadblock блока к которому будет делать запросы.
$hlblock = HL\HighloadBlockTable::getById($hlbl)->fetch();
$entity = HL\HighloadBlockTable::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();
// Массив полей для обновления
$data = array(
‘UF_CODE’ => $one_code[‘TEXT’]
);
$result = $entity_data_class::update($hl_id, $data); // где $hl_id — id обновляемой записи
/**/
}
}
}
Ещё статьи:
15.02.2024
История о жадности или как клиент свободное место искал на сервере
Случилась у меня одна история с клиентом, который свободное место искал на сервере, но на самом деле это больше о жадности, но в итоге всё равно пришл...
ID: 466
08.11.2023
Хроники БУС упадка
На днях произошли очередные изменения в БУС битрикс. Полезный модуль bitrix.xscan включили в состав проактивной защиты и убрали из бесплатного сегмента...
ID: 465
26.07.2023
Kwork.com закрыл доступ для резидентов РФ
Доступ к выставлению услуг теперь ограничен "К сожалению, вынуждены сообщить, что резиденты РФ в настоящее время не могут использовать сайт Kwork...
ID: 463
Новые статьи в блоге:
31.07.2024
Нюансы продления лицензии на 3 и 6 месяцев от 12 месяцев
На маркетплейсе есть такая кнопка "купить продление", при нажатии на неё есть выпадающий список продолжительность (3 мес. самый дешовый ...
ID: 494
31.07.2024
Ошибка в блоке "Вы смотрели" на базе catalog.section
При создании блока "Вы смотрели" на базе catalog.section на детальной странице товара столкнулся с ошибкой, когда блок работал не корректно,...
ID: 493
26.06.2024
Мой отзыв о Seo-специалисте Александр Сергиенко
Делюсь моим опытом о Seo-специалисте Александр Сергиенко https://kwork.ru/user/21alex
Я думаю потенциальным клиентам этого мудака будет полезно узнать...
ID: 471