Требуется сохранить превью видео с youtube в качестве картинки анонса. Пытаюсь сделать это через событие OnBeforeIBlockElementAdd, обработчик события ниже:
Однако после сохранения элемента инфоблока ничего не происходит. Поле "картинка для анонса" остаётся пустым.
Как это можно исправить?
| Код |
|---|
function savePreview (&$arFields){
if ($arFields["IBLOCK_ID"] == 29){
$prop = \CIBlockElement::GetProperty($arFields['IBLOCK_ID'], $arFields['ID'], array("SORT" => "ASC"), array("CODE" => "VIDEO"));
if ($arProp = $prop->Fetch()) {
$path = $arProp["VALUE"]['path'];
$addr = preg_replace("/youtu\.be\/([a-zA-z0-9_-]+)/", 'img.youtube.com/vi/$1/mqdefault.jpg',$path);
$file = \CFile::MakeFileArray($addr);
$file = array_merge($file, array("del" => ${"VIDEO_del"}, "MODULE_ID" => "iblock"));
$fid = \CFile::SaveFile($file, "");
$arFile = \CFile::GetFileArray($fid);
$arFields["PREVIEW_PICTURE"] = $arFile;
}
}
} |
Как это можно исправить?