Если нету стандартной реализации, решил попробовать сам.
Создал свои шаблоны импорта, это файлы:
csv_store_run.php и csv_store_run.php
Теперь в файле csv_store_run.php я так понимаю в массив $arDataFileFields[$i] записываются параметры, которые будут импортироваться (их коды)
строчки 185-202
После этого с последней позиции в файле мы заполняем массив $arRes значениями/данными для импорта
строчки 289-300
Создаем элемент инфоблока и раздел
строчки 300-301
А теперь, уважаемые знатоки,
вопрос, после отмашки
//Prepare load arrays мы забиваем названия свойств в массивы, чтобы потом по ним присваивать значения свойств в элементы инфоблока?
Или что это за 4 цикла, они отвечают за разные "вкладки" в настройках элемента?
$defCatalogAvailGroupFields
$defCatalogAvailProdFields
$defCatalogAvailPriceFields
$defCatalogAvailValueFields
А еще массив $arGroupsTmp это массив всех свойств найденных в файле?) Или доступных для записи?
Код |
---|
if ('' == $strImportErrorMessage)
{
$bFirstHeaderTmp = $csvFile->GetFirstHeader();
$csvFile->SetFirstHeader(false);
if ($arRes = $csvFile->Fetch())
{
for ($i = 0, $intCount = count($arRes); $i < $intCount; $i++)
{
$arDataFileFields[$i] = iconv("Windows-1251","UTF-8",$arRes[$i]); // сам добавил перекодировку, потому что excel сохраняет в нужном // мне формате лишь в кодировке windows-1251
}
}
else
{
$strImportErrorMessage .= GetMessage("CATI_NO_DATA")."<br>";
}
global $NUM_FIELDS;
$NUM_FIELDS = count($arDataFileFields); // количество параметров
}
_______________________________________________________________________________________________________________________________________________________
$csvFile->SetPos($CUR_FILE_POS);
$arRes = $csvFile->Fetch();
if ($CUR_FILE_POS<=0 && $bFirstHeaderTmp)
{
$arRes = $csvFile->Fetch();
}
foreach($arRes as $key => $resStr)
{
$arRes[$key] = iconv("Windows-1251","UTF-8",$resStr); //перекодировал также данные
}
_________________________________________________________________________________________________________________________________________________________
$bs = new CIBlockSection();
$el = new CIBlockElement(); |