Добро пожаловать в самую большую библиотеку wordpress-кода в рунете

Множественная загрузка в поле типа "Файл" при импорте товаров из csv

Bitrix · 30.08.2024 10:20

0 0 107

Как мы все знаем - Битрикс спустя годы не поддерживает нормальный, удобный импорт из csv в поля с возможностью множественных значений. 

Это очень неудобно и решается или:

1. каждая строка в файле csv дублируется по числу всех уникальных значений всех множественных полей. Таким образом список из 30 элементов может легко превратиться в файл из 200-300 строк, собранных вручную...
2. использование сторонних модулей, чаще платных. В том числе, необходимость тратить дополнительное время на их изучение, общение с их поддержкой. Или даже ковыряние в коде модулей, если что-то идет не так...

Пока предлагаем вам решение для импорта в поле типа "файл", поддерживающее множественное значение.

Данный код нужно разместить в файле bitrix/modules/catalog/load_import/csv_new_run.phpсразу перед строкой: elseif ($arIBlockProperty[$cur_prop_id]["PROPERTY_TYPE"]=="F")
Да, у вас должна быть для этого редакция не ниже "малый бизнес", и нужно использовать импорт именно в разделе "магазин". Проверено - работает!

Исходник: #https://dev.1c-bitrix.ru/community/forums/forum6/topic39164/#

elseif ($arIBlockProperty[$cur_prop_id]["PROPERTY_TYPE"]=="F" && $arIBlockProperty[$cur_prop_id]["MULTIPLE"]=="Y")
{
$files = explode(',', $arRes[$i]);

$arFileFields = [];

foreach ($files as $file)
{
$file = trim($file);

if(preg_match("/^(ftp|ftps|http|https):\\/\\//", $file))
$file = CFile::MakeFileArray($file);
else
$file = CFile::MakeFileArray($io->GetPhysicalName($_SERVER["DOCUMENT_ROOT"].$PATH2IMAGE_FILES.'/'.$file));

$arFileFields[] = ['VALUE' => $file, 'DESCRIPTION' => ''];
}

$PROP[$cur_prop_id] = $arFileFields;
continue;
}

Обсудить сниппет
romapad

romapad

присоединился
30.04.2016

  • 69 Добавлено
    Сниппетов
  • 2 Получено
    Лайков
  • 0 Comments Posted
Теги
Поделиться с друзьями