WebDp English info@webdp.org
+998 90 357-67-26

Как импортировать CSV в публичной части сайта на Bitrix

Как реализовать требуемый функционал?
Допустим, правильно подготовленные файлы у нас есть.
Хотелось бы подгружать их из публичной части и что бы происходил импорт в инфоблок.
Это вообще возможно?
Вот готовое решение.

<?
// абсолютный путь до файла
$file_name = 'csv/import.csv';

// подключаем Модуль Main.
CModule::IncludeModule("main");
// подключаем Модуль Информационные блоки.
CModule::IncludeModule("iblock");
// подключаем Модуль Каталог.
CModule::IncludeModule("catalog");

$el = new CIBlockElement;

// параметры для создание символьного кода
$params = Array(
  "max_len" => "200", // обрезает символьный код до 200 символов
  "change_case" => "L", // буквы преобразуются к нижнему регистру
  "replace_space" => "_", // меняем пробелы на нижнее подчеркивание
  "replace_other" => "_", // меняем левые символы на нижнее подчеркивание
  "delete_repeat_replace" => "true", // удаляем повторяющиеся нижние подчеркивания
  "use_google" => "false", // отключаем использование google
);

if(($handle_f = fopen($file_name, "r" )) !== FALSE)
{
  fseek($handle_f, $im);
  while(!feof($handle_f))
  {
    $line = fgets($handle_f);
    
    // меняем кодировку в файле на UTF-8
    $buffer = iconv("WINDOWS-1251", "UTF-8", $line);

    //разбиваем строку на значения и помещаем в массив
    $data = explode(';', $buffer);
    
    // свойства товара.
    $PROP = array();
    $PROP[315] = $data[2];  // Артикул
    $PROP[355] = $data[1];  // Бренд
    $PROP[356] = "PRIDE";      // Поставщик

    // изображение.
    $img = CFile::MakeFileArray('Путь до изображения'.$data[0].'.jpg');
    
    $arLoadProductArray = Array(
      "MODIFIED_BY"        => 1,             // элемент изменен текущим пользователем
      "IBLOCK_SECTION_ID" => "",        // элемент лежит в корне инфоблока
      "CODE"            => CUtil::translit($data[3], "ru" , $params),    // символьный код
      "IBLOCK_ID"          => 15,            // ID инфоблока
      "PROPERTY_VALUES"    => $PROP,        // массив свойств
      "NAME"               => $data[3],    // имя товара
      "ACTIVE"             => "Y",            // активен
      "PREVIEW_PICTURE" => $img,        // изображение анонса
      "DETAIL_PICTURE"     => $img            // детальное изображение
    );

    if($PRODUCT_ID = $el->Add($arLoadProductArray))
    {
      // элемент добавлен
    }else{
      // вывод ошибки добавления элемента
    }
  }
  fclose($handle_f);
}
?>

Все статьи