http://dev.1c-bitrix.ru/community/webdev/user/60622/blog/7049/

Доброго времени суток, уважаемое сообщество!!!

Поступила тут одна «хотелка» от клиента. спешу поделиться

Итак: есть сайт, на котором публикуется (точнее пока что планируется к публикации) огромное количество статей. В этих статьях по тексту контент-менеджеры могут накидывать какие-то изображения, поясняющие текст. НО! заниматься подгонкой изображений к читабельному виду для такого количества статей им то ли лень, то ли денег жалко … и захотел клиент, чтобы все-таки изображения ужимались. причем, ужимались сервером, а не браузером клиента.

И вот родилась идея:

в компоненте детального вывода статьи в файле result_modifier создаею обработчик:

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); 
$pattern="/<img[^>]+src=(\"|')(.+?)(\"|')[^>]*>/si"; 
preg_match_all($pattern,$arResult["DETAIL_TEXT"],$matches); 
$startfloat="right"; 
$arResult["DETAIL_TEXT"]=str_replace(SITE_SERVER_NAME,"",$arResult["DETAIL_TEXT"]); 
$arResult["DETAIL_TEXT"]=str_replace(str_replace("http://","http://www.",SITE_SERVER_NAME),"",$arResult["DETAIL_TEXT"]); 
foreach ($matches[0] as $k=>$image) { 
    $imgSrc='<а  class="fancy" href="'.$matches[2][$k].'" >'; 
    $imgSrc.=CFile::ShowImage($matches[2][$k], 300, 300, "style='float:".$startfloat.";margin:5px;'", "", false); 
    $imgSrc.="</а>"; 
    $arResult["DETAIL_TEXT"]=str_replace($image,$imgSrc,$arResult["DETAIL_TEXT"]); 
    if($startfloat=="right") $startfloat="left"; else $startfloat="right"; 
} 
?> 

в итоге, все изображения ужимаются в 300 на 300, а если кто хочет — в fancybox (если конечно к вашему сайту подключена данная библиотека) может посмотреть в полном размере…