Ресайз изображений CFile::ResizeImageGet()

Иногда встречаются сайты, когда, например, в каталоге изображения товаров добавляются то в анонс, то в деталку, то ресайзятся анонсы из деталки, о серьезных проблемах при смене дизайна мало кто задумывается.

Чтобы ресайзить изображения в списке товаров при выводе и когда неизвестно, детальная прилетит картинка или аноса, поможет вот этот код в шаблоне компонента в файле result_modifier.php, всю логику максимально пишем в нем, для этого он и создан.

if($arResult['ITEMS']) {
foreach($arResult['ITEMS'] as $key => &$arItem) {

$arItem['PICTURE'] = array();

$picture = $arItem['DETAIL_PICTURE'] ? $arItem['DETAIL_PICTURE'] : $arItem['PREVIEW_PICTURE'];
if($picture) {
$arFileTmp = \CFile::ResizeImageGet(
$picture,
array('width' => 250, 'height' => 250),
BX_RESIZE_IMAGE_PROPORTIONAL,
true
);

if($arFileTmp['src'])
$arFileTmp['src'] = \CUtil::GetAdditionalFileURL($arFileTmp['src'], true);

$arItem['PICTURE'] = array_change_key_case($arFileTmp, CASE_UPPER);
}
}
}

Изображение товара выводим в template.php

<? if($arPicture = $arItem['PICTURE']): ?>
  <a href="<?=$arItem['DETAIL_PAGE_URL']?>"><img
       src="<?=$arPicture['SRC']?>"
       width="<?=$arPicture['WIDTH']?>"
       height="<?=$arPicture['HEIGHT']?>"
       alt="<?=$arItem['NAME']?>"
       title="<?=$arItem['NAME']?>"></a>
<? endif ?>


Пояснения по коду


Здесь мы делаем ресайз изображений Битрикс до заданных размеров

CFile::ResizeImageGet();

Здесь добавляем к адресу файла метку версии файла, иначе хэш, для кэширования картинки в браузере клиента, проверьте, при повторном обновлении страницы список товаров будет заметно быстрее загружаться, практически моментально, т.к. все картинки закэшируются в вашем бразере на компьютере и при повторном запросе браузер их будет брать именно с ПК,  а не с сервера, это самый простой и действенный вариант, когда нет возможности и знаний настраивать сам сервер и различные заголовки.

CUtil::GetAdditionalFileURL();

Результат в самом конце ?14778338342044

/upload/resize_cache/iblock/e00/64_64_190cf9bfc02c81ba0a02cc940d6445018/3pic.png?14778338342044

А эта php-функция преобразует в верхний регистр ключи массива, чтобы в едином стиле все было

array_change_key_case();
Имя *
Логин (мин. 3 символа)
E-mail *
*— обязательные для заполнения поля
Логин или e-mail
TUNING-SOFT.RU Разработка умных веб-сервисов