Вход Регистрация
*— обязательные для заполнения поля
Войти через социальные сети

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

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

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

if($arResult["ITEMS"])
{
    foreach($arResult["ITEMS"] as $key => &$arItem)
    {
        $picture = $arItem['PREVIEW_PICTURE'];
        if(!$picture)
            $picture = $arItem['DETAIL_PICTURE'];
        if($picture)
        {
            $arFileTmp = CFile::ResizeImageGet(
                 $picture,
                 array('width' => 170, 'height' => 170),
                 BX_RESIZE_IMAGE_PROPORTIONAL_ALT,
                 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/3.png?14778338342044

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

array_change_key_case();
Комментарии
ЗОЖ
Комментарии
Последние комментарии
В комплект к нему будет полезно установить RSS-Bridge https://github.com/RSS-Bridge/rss-bridge Позво...
"key-buffer-size 8 МБ 32M" Этот буфер используется только для myisam, зачем его увели...
В вашем примере не сохраняются параметры запроса if ($request_uri ~* &quot;^(.*/)index\.ph...
В bitrix-env используется percona 5.7. С ней не проверяли, проблем не было?
Здравствуйте. Разместили компонент на странице товара (в component_epilog.php шаблона компонента cat...
Ребята, подскажите, удалось решить проблему с подключением CSS? Чтобы оплата отображалась в шаблоне ...
На 18 битриксе все работает нормально,автор спасибо за статью,полезное дело делаете!!! Попроб...
Подписка
Выберите рассылку