Задать вопрос
  • Resize изображения из .js в Битриксе, как прикрутить ресайз?

    @Zarubaxa
    добрый день, методом проб и ошибок нашел, что добавляет эта строка, но так и не понял как добавить ресайз тут
    this.obPictSlider.appendChild(
    								BX.create('SPAN', {
    									props: {className: 'product-item-image-slide item' + (i == 0 ? ' active' : '')},
    									style: {backgroundImage: 'url(\'' + this.offers[index].MORE_PHOTO[i].SRC + '\')'}
    								})
    							);


    Так что использовал такой вариант
    у меня не работал ресайз слайдера, так как картинки подгружались скриптом по id, в итоге нашел способ подхватывать событие добавление/редактирование элементов инфоблока

    AddEventHandler("iblock", "OnAfterIBlockElementAdd", "resizePropertyFilePhoto");
    AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "resizePropertyFilePhoto");
    
    function resizePropertyFilePhoto($arFields){
        global $APPLICATION;
        CModule::IncludeModule('iblock');
    
    
    
        switch ($arFields["IBLOCK_ID"]){
            case 15:
                $IBLOCK_ID = 15;
                $PROPERTY_CODE = "ATTR_FOTOMORE";
                $MaxWidth = 1920;
                $MaxHeight = 1080;
                break;
    
            case 18:
                $IBLOCK_ID = 18;
                $PROPERTY_CODE = "ATTR_FILES";
                $MaxWidth = 1920;
                $MaxHeight = 1080;
                break;
            default:
                $IBLOCK_ID = 0;
        }
    
    
    
        if($IBLOCK_ID !== 0) {
            $new_files  = array();
            $old_files = array();
    
            $res = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields["ID"], "sort", "asc", array("CODE" => $PROPERTY_CODE));
            while ($ob = $res->GetNext()) {
                $file_path = CFile::GetPath($ob['VALUE']);
    
                if($file_path) {
                    $file_size = getimagesize($_SERVER["DOCUMENT_ROOT"].$file_path);
    
                    if (($file_size[0] > $MaxWidth) || ($file_size[1] > $MaxHeight)) {
                        $file = CFile::ResizeImageGet($ob['VALUE'], array(
                            'width'=>$MaxWidth,
                            'height'=>$MaxHeight
                        ), BX_RESIZE_IMAGE_PROPORTIONAL_ALT, true);
    
                        $new_files[] = array(
                            "VALUE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$file["src"]),
                            "DESCRIPTION" => $ob['DESCRIPTION']);
                    } else {
    
                        $new_files[] = array(
                            "VALUE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$file_path),
                            "DESCRIPTION" => $ob['DESCRIPTION']);
                    }
    
                    $old_files[] = $ob['VALUE'];
                }
            }
    
            if(count($new_files) > 0) {
                $PROPERTY_VALUE = $new_files;
                CIBlockElement::SetPropertyValuesEx($arFields["ID"], $arFields["IBLOCK_ID"], array($PROPERTY_CODE => $PROPERTY_VALUE));
    
                foreach ($old_files as $key=>$val) {
                    CFile::Delete($val);
                }
            }
            unset($new_files);
            unset($old_files);
        }
    }


    решение взял отсюда - вот тут
    но пришлось перезагрузить фотки у товаров
    может вам поможет
    Ответ написан
    Комментировать