Предварительная нарезка фотографий элементов инфоблока


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

После установки модуля необходимо перейти в раздел «Настройки -> Настройки продукта-> Настройки модулей -> Предварительная нарезка фотографий элементов инфоблока» и добавить «правила» обработки изображений.

Для разработчиков: перед нарезкой изображения вызывается событие OnBeforePreResizeImage (в новом D7 стиле).

Пример обработки анонимным обработчиком:

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'olegpro.preresizer',  
    'OnBeforePreResizeImage',  
    function (\Bitrix\Main\Event $e) {
        $iblockElement = $e->getParameter('IBLOCK_ELEMENT');  
        if($iblockElement['IBLOCK_ID'] == 2) {
                $rule = $e->getParameter('RULE');  
            $rule['width'] = 300;  
            $e->setParameter('RULE', $rule);  
            return new \Bitrix\Main\EventResult( 
                \Bitrix\Main\EventResult::SUCCESS,  
                $e->getParameters() 
            );  
        }
    }
);

Массив параметров обработчика выглядит (RULE и FILE_ID можно менять)

Array
(
    [FILE_ID] => 1
    [RULE] => Array
        (
            [field] => DETAIL_PICTURE
            [width] => 250
            [height] => 250
            [resize_type] => 0
            [filters] => {"json" : "format"}
            [immediate] => 0
            [jpg_quality] => 
        )
 
    [IBLOCK_ELEMENT] => Array
        (
            [DETAIL_PICTURE] => 1
            [~DETAIL_PICTURE] => 1
            [IBLOCK_ID] => 2
            [~IBLOCK_ID] => 2
            [ID] => 2
            [~ID] => 2
        )
 
)