Так. На битриксе меньше недели, поэтому не ругайте сильно, пожалуйста.
Требуется: на свойство типа "Файл" (изображения), находящееся в инфоблоке "Новости", повесить resize-обработчик, чтобы все изображения минимизировались до нужных размеров.
Как я понял, обработчик нужно ставить сюда: /bitrix/php_interface/init.php
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("MyHandlers", "ResizeElementProperty"));
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", Array("MyHandlers", "ResizeElementProperty"));
class MyHandlers
{
function ResizeElementProperty(&$arFields)
{
global $APPLICATION;
//Код инфоблока свойство каторого нуждается в масштабировании
$IBLOCK_ID = 1;
//Идентификатор свойства
$PROPERTY_ID = 32;
//Наш инфоблок и значения свойства в наличии
if(
$arFields["IBLOCK_ID"] == $IBLOCK_ID
&& is_array($arFields["PROPERTY_VALUES"])
&& array_key_exists(15, $arFields["PROPERTY_VALUES"])
)
{
foreach($arFields["PROPERTY_VALUES"][$PROPERTY_ID] as $key => $arFile)
{
//Изменяем размеры картинки
$arNewFile = CIBlock::ResizePicture($arFile, array(
"WIDTH" => 100,
"HEIGHT" => 100,
"METHOD" => "resample",
));
if(is_array($arNewFile))
$arFields["PROPERTY_VALUES"][$PROPERTY_ID][$key] = $arNewFile;
else
{
//Можно вернуть ошибку
$APPLICATION->throwException("Ошибка масштабирования изображения в свойстве \"Файлы\":".$arNewFile);
return false;
}
}
}
}
}
Как и следовало ожидать, нужная картинка при изменении её в одной новостей была загружена в полном размере (без ресайза). Ещё раз прошу прощения за свою некомпетентность, но подскажите пожалуйста, что я делаю не так?