require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
if (!CModule::IncludeModule("iblock")) {
die("Модуль инфоблоков не подключен.");
}
$iblockId = 41; // ID инфоблока
$propertyCode = "MORE_PHOTO"; // Код свойства с изображениями
$arSelect = ["ID"];
$arFilter = [
"IBLOCK_ID" => $iblockId,
"ACTIVE" => "Y",
"!PROPERTY_" . $propertyCode => false // Фильтруем только те элементы, у которых есть значение в MORE_PHOTO
];
$res = CIBlockElement::GetList([], $arFilter, false, false, $arSelect);
// Получаем настройки инфоблока для ресайза один раз
$iblockSettings = CIBlock::GetArrayByID($iblockId, "FIELDS");
$previewResize = $iblockSettings["PREVIEW_PICTURE"]["DEFAULT_VALUE"];
$detailResize = $iblockSettings["DETAIL_PICTURE"]["DEFAULT_VALUE"];
if (!function_exists('resizeImage')) {
function resizeImage($fileArray, $resizeSettings) {
if ($resizeSettings['SCALE'] == 'Y') {
$resizeParams = [
'width' => $resizeSettings['WIDTH'],
'height' => $resizeSettings['HEIGHT']
];
return CFile::ResizeImageGet(
$fileArray,
$resizeParams,
BX_RESIZE_IMAGE_PROPORTIONAL_ALT,
true
);
}
return false;
}
}
while ($element = $res->Fetch()) {
$elementId = $element['ID'];
// Получаем все значения свойства MORE_PHOTO
$morePhotos = CIBlockElement::GetProperty(
$iblockId,
$elementId,
["sort" => "asc"],
["CODE" => $propertyCode]
);
$firstPhotoId = null;
while ($photo = $morePhotos->Fetch()) {
if (!empty($photo['VALUE'])) {
$firstPhotoId = $photo['VALUE'];
break; // Берем только первый ID
}
}
// Если нашли хотя бы одну картинку, обновляем DETAIL_PICTURE и PREVIEW_PICTURE
if ($firstPhotoId) {
$detailPicture = CFile::GetFileArray($firstPhotoId);
// Проверяем, что $detailPicture корректно создан
if (is_array($detailPicture)) {
// Ресайз изображений
$previewPicture = resizeImage($detailPicture, $previewResize);
$detailPicture = resizeImage($detailPicture, $detailResize);
$el = new CIBlockElement;
$arLoad = [
"DETAIL_PICTURE" => $detailPicture ? CFile::MakeFileArray($detailPicture['src']) : $detailPicture,
"PREVIEW_PICTURE" => $previewPicture ? CFile::MakeFileArray($previewPicture['src']) : $previewPicture
];
if ($el->Update($elementId, $arLoad)) {
echo "Updated element ID: $elementId";
} else {
echo "Failed to update element ID: $elementId. Error: " . $el->LAST_ERROR . "";
}
} else {
echo "Failed to create file array for element ID: $elementId";
}
} else {
echo "No valid MORE_PHOTO for element ID: $elementId";
}
}
Каталог сайтов и услуг
- Услуги настройки сайтов и интернет-магазинов на 1С-Битрикс
- Установка и запуск сайта на 1С-Битрикс
- Работа с контентом и аналитикой
- Обязательные настройки интернет-магазина на 1С-Битрикс
- Графический дизайн и визуальное оформление
- Поисковая оптимизация, настройка SEO
- Настройка платежных систем в 1С-Битрикс
- Настройка способов доставки в 1С-Битрикс
- Безопасность и быстродействие сайтов на 1С-Битрикс
- Интеграция 1С-Битрикс с 1С
- Интеграция с сервисами Яндекс
- Техническое обслуживание и доработка сайта
- Интеграция с CRM
- Лицензии Управление сайтом
- Лицензии Битрикс24 (облако)
- Лицензии Битрикс24 (коробочная версия)
- Лицензии на «Энтерпрайз»
- Модули и приложения от OX8
- 1С-Битрикс: Маркетплейс
- Подписки на маркет