Меню
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
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить картинки
 

Блог-note: заметки разработчика

Удалить всех пользователей которые не делали заказов в магазине 1С-Битрикс

Задача: сайт проработал 7 лет и все время на нем была открытая регистрация, создано много мертвых учетных записей (б...

Получение SEO данных элементов и разделов инфоблока, через API 1С-Битрикс

Для того чтобы извлечь данные из вкладки SEO административной панели Битрикс, необходимо использовать специализированные...

Удалить все картинки элементов инфоблока: анонс, детальную и дополнительные картинки (MORE_PHOTO)

Задача: В инфоблоке 10 000 элементов, нужно удалить картинки анонса, детальные и дополнительные картинки из свойства MOR...

Получить множественное пользовательское поле раздела. Значения множественного UF_ поля через API

Задача: У разделов инфоблока есть множественное поле типа список. Зная ID раздела, нужно получить и вывести всю информац...

Ссылка на товары бренда в каталоге с автоматическим применением умного фильтра

Задача: вывести товары на странице бренда, выведенного компонентом "Новости", с ссылками на разделы в каталоге...

Создание скидки на общую сумму покупки в Битрикс корзине

Функционал интернет-магазина, работающего под управлением 1С Битрикс, позволяет задавать множество условий скидок в корз...

Настройка прав доступа в 1С-Битрикс

Часто, в интернет-магазине под управлением 1С Битрикс, нужно создать группу пользователей со специфическими правами. Нап...

СЕО настройки сайта перед запуском

В видео рассказано о первоначальной СЕО настройке сайта перед запуском. Все показанное является компилицией из собственн...

Вывести артикул в печатную форму бланка заказа

Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе.