Скрипт, который я хочу вам предложить, может помочь при написании статей или новостей на сайте. Он позволит не тратить время на изменения размеров изображения анонса или детального описания.
Скрип является обработчиком создания и сохранения элемента инфоблока. Он получает настройки инфоблока и на основании их осуществляет имение размеров картинок, находящихся в описание.
Код (/bitrix/php_interface/init.php)
Также можно автоматически добавлять водяной знак к данным изображениям. Для этого следует задать 5-ый параметр $arFilter метода CFile::ResizeImageGet. Использование его описано в комментариях к данному методу документации разработчиков (http://dev.1c-bitrix.ru/api_help/main...geget.php) .
До нажатия кнопки "Применить".

После нажатия "Применить".

Скрип является обработчиком создания и сохранения элемента инфоблока. Он получает настройки инфоблока и на основании их осуществляет имение размеров картинок, находящихся в описание.
Код (/bitrix/php_interface/init.php)
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("IblockClass", "OnBeforeIBlockElementSaveHandler")); AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", Array("IblockClass", "OnBeforeIBlockElementSaveHandler")); class IblockClass { function OnBeforeIBlockElementSaveHandler(&$arFields) { $arIblockFields = CIBlock::GetFields($arFields["IBLOCK_ID"]); //Получение параметров инфоблока $arPole array ("PREVIEW_PICTURE","DETAIL_PICTURE"); foreach ($arPole as $pole) {//Формируем массив размера изображения $arSize = array( "width" => $arIblockFields[$pole][DEFAULT_VALUE][WIDTH], "height" => $arIblockFields[$pole][DEFAULT_VALUE][HEIGHT] ); if ($arFields[$pole.'_TYPE'] == 'html') { $text = &$arFields['DETAIL_TEXT']; //осуществляем поиск тегов img preg_match_all('/<img[^>]+src=["\']([^"\']+)["\'][^>]*>/msi',$text,$regs); foreach($regs[0] as $k => $v) { if (strpos($v, 'scaled') !== false) continue; $ar = split('/',$regs[1][$k]); //формируем массив описывающйи файл $arFileGMS = getimagesize($_SERVER['DOCUMENT_ROOT'].$regs[1][$k]); $arFile["FILE_NAME"] = end($ar); $arFile["SUBDIR"] = ''; $arFile["WIDTH"] = $arFileGMS[0]; $arFile["HEIGHT"] = $arFileGMS[1]; foreach($ar as $kpath=>$vpath) { if($vpath and !($vpath == 'upload')) { if($kpath < (count($ar)-2)) $arFile["SUBDIR"] .= $vpath.'/'; elseif($kpath < (count($ar)-1)) $arFile["SUBDIR"] .= $vpath; } } $arFile[CONTENT_TYPE]= $arFileGMS['mime']; //изменяем размер. //BX_RESIZE_IMAGE_EXACT - масштабирует в прямоугольник $arSize без сохранения пропорций //BX_RESIZE_IMAGE_PROPORTIONAL - масштабирует с сохранением пропорций, размер ограничивается $arSize //BX_RESIZE_IMAGE_PROPORTIONAL_ALT - масштабирует с сохранением пропорций, размер ограничивается $arSize, улучшена обработка вертикальных картинок $arFF = CFile::ResizeImageGet($arFile, $arSize, BX_RESIZE_IMAGE_PROPORTIONAL, FALSE); //подменяем параметры изображения в тексте описания. $v_new = preg_r eplace('/src=["\'][^"\']+["\']/msi','\0 scaled="Y"',$v); $v_new = preg_r eplace('/src=["\']?[^"\']+["\']?/msi','src="'.$arFF['src'].'"',$v_new); $v_new = preg_r eplace('/width=["\']?[^"\']+["\']?/msi','width="'.$arSize["width"].'"',$v_new); $v_new = preg_r eplace('/height=["\']?[^"\']+["\']?/msi','height="'.$arSize["height"].'"',$v_new); $text = str_r eplace($v, $v_new, $text); } } } } } |
Также можно автоматически добавлять водяной знак к данным изображениям. Для этого следует задать 5-ый параметр $arFilter метода CFile::ResizeImageGet. Использование его описано в комментариях к данному методу документации разработчиков (
До нажатия кнопки "Применить".

После нажатия "Применить".
