Загрузка изображений секций каталога

RSS
Загрузка изображений секций каталога
 
Проблема такая, есть список картинок которые нужно установить как картинки секций каталога товаров. Но в каталоге в районе 500 секции и ходить и делать это руками очень долго. Цель автоматизировать этот процесс.

Написал такой скрипт
Код
        //Точка входа с файлами, скрипт думаю будет хранится в папке админ, там же и файлы
        $sectionIconsFolder = "/bitrix/admin/custom/section-icons";
   $path =$_SERVER['DOCUMENT_ROOT'].$sectionIconsFolder;
        
        //Получаем содержимое
   $images = scandir($path);
        
        //Проходимся по всем файлам
   while(list($key, $filename) = each($images)) {
                
                //По какой-то причине первые два айтема в массиве с файлами это ., .., для тестовых целей пока что сделал так
      if($filename != '.' && $filename != '..') {
                        //Здесь пока что статичные данные для тестовых целей                
                        //Находим секци по названию секции
              $arFilter = Array('IBLOCK_ID'=>2, 'CODE'=>'underwear');
                $data = CIBlockSection::GetList(array("ASC" => "DESC"), $arFilter)->GetNext();

                        // Здесь я так полагаю происходит ошибка алгоритма
                        // Насколько я знаю в картинку обычно добавляются данные файла с помощью CFile:MakeFikeArray
                        // Здесь это не работает, есть подозрение что он не может добавить файл так как его нету в дб битрикса и 
                        // не в папке upload, скорее всего нужно добавить шаг с добавлением картинки в дб, мб я ошибаюсь
         $newPicture = CFile::MakeFileArray($path . "/" . $filename);
         CIBlockSection::Update($data["ID"], Array("PICTURE" => $newPicture));
         echo print_r($newPicture);
      }
   };
Проставил комментарии, в общем буду очень благодарен если поможете решить данную проблему
 
Ребят, думаю ошибка в алгоритме что в целом возможно, но по итогу вот что мне консоль вывела на метод CIBlockSection::Update
Код
Using $this when not in object context (0)
site.ru/bitrix/modules/iblock/classes/general/iblocksection.php:772 
Есть подозрения что ошибка в самом методе
 
Решил проблему, метод update не является статикой и вызывать его так CIBlockSection::Update было ошибкой, вот верный синтаксис $bs = new CIBlockSection; $bs->Update. Тему можно закрывать.  
 
Да, что бы кому-то (кто нарвется на этот вопрос) было понятнее

Код
$bs = new CIBlockSection;

$sectionIconsFolder = "/bitrix/admin/custom/section-icons";
$path = $_SERVER['DOCUMENT_ROOT'] . $sectionIconsFolder;
$images = scandir($path);

while (list($key, $filename) = each($images)) {
    if ($filename == '.' && $filename == '..') {
        continue;
    }
    $dbData = CIBlockSection::GetList(
        false,
        array(
            'IBLOCK_ID' => 2,
            'CODE' => 'underwear'
        )
    );
    while ($arSection = $dbData->Fetch()) {
        $arNewPicture = CFile::MakeFileArray($path . "/" . $filename);
        $arFields = array(
            "PICTURE" => $arNewPicture
        );
        $res = $bs->Update($arSection['ID'], $arFields);
    }
}
Изменено: Михаил Базаров - 09.11.2022 15:22:29
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить картинки
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Ютубе