JohnDaniels
@JohnDaniels

Как получить картинку анонса в OnAfterIBlockElementAdd?

Ситуация: при добавлении новости нужно сформировать письмо и отправить его определенным юзерам.
Сделал через OnAfterIBlockElementAdd, все работает, но
не могу вытащить из новости картинку анонса (чтобы вставить ее в письмо).
если сделать
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "OnAfterIBlockElementAddHandler");

function OnAfterIBlockElementAddHandler(&$arFields)
{
    if(!$arFields["RESULT"])
        return false;

    if($arFields['IBLOCK_ID'] == 5){ //инфоблок новостей
        var_dump($arFields);die;

// дальше уже неважно
}


то в $arFields нет поля "PREVIEW_PICTURE".
в новости при этом картинка присутствует.
в документации сказано, что "в arFields["PREVIEW_PICTURE"] (arFields["DETAIL_PICTURE"]) хранится исходный временный файл (из папки temp)" и "При этом реальный файл, который привязан к элементу, не указывается. В то же время в массив arFields передается ключ "PREVIEW_PICTURE_ID" ("DETAIL_PICTURE"), в нём хранится ID привязанного к элементу файла. "
У меня же таких ключей просто нет.
Кто-нибудь сталкивался?
  • Вопрос задан
  • 1722 просмотра
Пригласить эксперта
Ответы на вопрос 2
У вас есть массив $arFields в котором есть ключ ID - идентификатор элемента инфоблока. Достать PREVIEW_PICTURE на основе этого не проблема.
Ответ написан
Комментировать
@atlant2010
Атлант - развитие сайтов на 1С-Битрикс
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "OnAfterIBlockElementAddHandler");
function OnAfterIBlockElementAddHandler(&$arFields) { 
    if(!$arFields["RESULT"]) return false; 
    If($arFields['IBLOCK_ID'] == 5) { //инфоблок новостей 
        $res = CIBlockElement::GetByID($arFields['ID'] ); 
        if($ar_res = $res->GetNext()) {
            $rsFile = CFile::GetFileArray($ar_res["PREVIEW_PICTURE"]);
            // $rsFile["SRC"] - относительный путь к картинки относительно DOCUMENT_ROOT
        }
 // дальше уже неважно
 }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы