Импорт без обновления

#
Импорт без обновления
Здравствуйте, требуется импортировать из csv, при этом не затирая изменения в товарах, которые были импортированы раньше, но изменены (например имя, описание).
Вроде бы всё стандартно и надо указать "Оставить без изменения", но в 6 версии всё-таки затираются изменения, сделанные в товаре. Пробовал на чисто установленной 6 версии. Соответствия задаются через артикул.
А вот в такой же, только установленной 5-ой версии с тем же файлом всё работает как надо.

Файл для теста был экспортирован из магазина на 6 версии. Но я пробовал и с другими файлами.
#
Re: Импорт без обновления
Testin,
указывайте "Не загружать" напротив тех полей, которым не нужно обновляться. Или просто удалите их из CSV.
#
Re: Импорт без обновления
Файл всегда один, в него добавляются новые товары, которые и нужно загружать. Так что не грузить некоторые поля не выйдет. У удалить старые товары из csv не выйдет.
Т.е как в 5 версии не сделать и "оставить без изменений" вообще не работает?
#
Re: Импорт без обновления
Отредактируйте файл  controller.php,   который лежит в  Корень   →   modules   →   shop   →   item   →   import   →   csv   (/admin/wysiwyg/filemanager/)
Начиная со строки 932, идет обработка полей товара, например:


// Передано название товара
case 'shop_items_catalog_name':
if ($sData != ''
{
$this->_oCurrentItem->name = $sData;
}
break;


добавьте в условие "&& !$this->_oCurrentItem->id" перед теми полями, которые не нужно обновлять, если товар уже создан. Однако, учтите, что поля, по которым определяется товар (артикул, идентификатор, cml_id и т.п.), должны быть в первых столбцах файла csv.

В итоге у вас получится так:

// Передано название товара
case 'shop_items_catalog_name':
if ($sData != '' && !$this->_oCurrentItem->id)
{
$this->_oCurrentItem->name = $sData;
}
break;

В этом случае, если товар уже есть в базе, имя не обновится. В случае, если после очередного обновления системы перестанет работать - снова отредактируйте данный файл и внесите эти изменения.
Авторизация