Битрикс загрузить картинки по артикулу из файлов фотографий
0
27.11.202121:3527.11.2021 21:35:14
Скрипт для загрузки фотографий товаров из файлов, файлы должны иметь вид артикул.jpg
Снабдил подробными комментариями в коде, если что то непонятно, пишите в комментарии))))
<?php
$_SERVER["DOCUMENT_ROOT"] = '/var/www/html/bx-site/';
require($_SERVER["DOCUMENT_ROOT"] . "bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("iblock");
// Директория с картинками для загрузки
const DIR_IMG = '/var/www/html/bx-site/script/img-import/';
// Получем массив файлов
$img_arr_dir = scandir(DIR_IMG);
$arCode = array();
$i=0;
foreach ($img_arr_dir as $item){
if($item == '.' or $item == '..'){
continue;
}
$path = DIR_IMG . $item;
$vendor_code = explode('.', $item);
$arCode[$i]['code'] = $vendor_code[0];
$arCode[$i]['path'] = $path;
$i++;
}
//Получаем товары каталога одним запросом чтобы не дергать поодиночке
$resItemsList = CIBlockElement::GetList(
array("ID", "NAME", "CML2_ARTICLE"),
array("IBLOCK_ID"=>11, "CML2_ARTICLE" => array_keys($arCode)),
false,
false,
array("ID", "NAME", "PROPERTY_CML2_ARTICLE")
);
// Преобразуем полученные товары в массив
$elements = array();
while ($element = $resItemsList->fetch())
{
$elements[] = $element;
}
// Цикл которой определяет ID товара и сохраняет картинку в инфоблок
$el = new CIBlockElement;
foreach ($arCode as $item){
// Находим ID товара по артиклу
if($key = array_search($item["code"], array_column($elements, 'PROPERTY_CML2_ARTICLE_VALUE'))){
echo 'Найден товар с артикулом ' . $item["code"] . ' ID: ' . $elements[$key]["ID"] . '<br>';
//Сохраняем картинку в инфоблок
$arLoadProductArray = Array(
"DETAIL_PICTURE" => CFile::MakeFileArray($item["path"]),
);
if($el->Update($elements[$key]["ID"], $arLoadProductArray)){
echo 'Изображение загруженно'. '<br>';
} else {
echo 'Изображение не загруженно'. '<br>';
}
} else {
echo 'Товар с артикулом ' . $item["code"] . ' не найден' . '<br>';
}
}
//echo '<pre>' . print_r($arCode, 1) . '</pre>';
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
|
27.11.202121:3527.11.2021 21:35:14