Файл result_modifier.php
Изменение результата работы компонента через result_modifier.php
, например детальное изображение добавлено в инфоблок не подходящего размера. Ситуация распространенная, т.к. подгонять
все изображение под один размер до миллиметра это не реально. Хотя конечно изображения должны быть примерно одинаковых размеров.
Нужно делать полноценный resize
с сохранением пропорций. В этой задаче нам поможет богатое API Битрикса, в нем
есть все функции для этого, а точнее нам понадобится всего одна CFile::ResizeImageGet
. Чтобы изменить размер изображений в инфоблоке Битрикс нужно выполнить следующий код.
/*
* Фрагмент кода из файла result_modifier.php, где происходит resize картинок
*/
if ($arResult['DETAIL_PICTURE']) {
$file = CFile::ResizeImageGet($arResult['DETAIL_PICTURE']['ID'], array('width' => 200,'height' => 200), BX_RESIZE_IMAGE_EXACT, true);
$arResult['DETAIL_PICTURE']['SRC'] = $file['src'];
$arResult['DETAIL_PICTURE']['HEIGHT'] = $file['height'];
$arResult['DETAIL_PICTURE']['WIDTH'] = $file['width'];
}
В цикле обходим элементы массива $arResult
и функцией CFile::ResizeImageGet()
изменяем размер изображения.
Подробнее о функции можно посмотреть в документации Битрикс. После преобразования мы устанавливаем параметры ширины и
высоты изображения 200 пикселов. Но главное мы в качестве источника изображения указываем наш преобразованный файл: $arResult['DETAIL_PICTURE']['SRC'] = $file['src'];
Данный код можно разместить и в самом шаблоне компонента news.list
или в специальном файле result_modifier.php
, который
должен находится в то же папке где и файл шаблона компонента. На нем я остановлюсь поподробней, т.к. это интересная технология модификации результата работы компонента без изменения кода компонента или шаблона.
Файл result_modifier.php
- инструмент для модификации данных работы компонента произвольным образом. Создается
разработчиком самостоятельно.
Если в папке шаблона есть файл result_modifier.php
, то он вызывается перед подключением шаблона и если в нем изменить
массив $arResult
, то измененный массив перейдет в файл шаблона. Таким образом удобно модифицировать стандартные
компоненты Битрикс без вмешательства в них. В дальнейшем такой подход позволяет обновлять не только ядро Битрикс, но и
само решение. При обновлении файл result_modifier.php
не будет затронут.