+7 495 008 8452 пн.-пт. 10:00 – 17:00
Загрузка...

Рекомендуем поступить следующим образом.

Прежде всего, в настройках каждого значения, выбранного в поле с выгрузкой изображений, отметить галочку «Использовать значение без обработки». Это приведёт к выгрузке не адресов картинок, а их идентификаторов: с идентификаторами легче работать чем с адресами (адреса нужно парсить, определять по ним ID по полям SUBDIR и FILE_NAME - а это лишняя работа).

Далее, в настройках поля (хотя, если значение одно - можно и в настройках значения) отметьте галочку «Произвольный код» и впишите такой код:


if(is_numeric($strValue)){
	# Получаем данные по профилю - домен и протокол (т.к. картинки мы должны выгружать по полному адресу)
	$arProfile = \Acrit\ExportProPlus\ProfileTable::getList(['filter' => ['ID' => $intProfileId], 'select' => ['DOMAIN', 'IS_HTTPS']])->fetch();
	$strDomain = \Acrit\Core\Helper::siteUrl($arProfile['DOMAIN'], $arProfile['IS_HTTPS'] == 'Y');
	# Получаем массив изображения из базы
	$arFile = \CFile::getFileArray($strValue);
	# Задаём размер изображений после ресайза
	$arSize = ['width' => 100, 'height' => 100];
	# Выполняем ресайз
	if($arResizedImage = \CFile::resizeImageGet($arFile, $arSize, BX_RESIZE_IMAGE_PROPORTIONAL, false, [])){
		# Если ресайз успешен, выгружаем адрес уменьшенного изображения
		print $strDomain.$arResizedImage['src'];
	}
	else{
		# Если ресайз не успешен, выгружаем адрес реальный изображения
		print $strDomain.$arFile['SRC'];
	}
}

Этот код для каждого выгружаемого значения (числа) выполняет ресайз, получает домен, и выгружает полный адрес изображения после ресайза.


Возврат к списку