Модуль Import/Export Tool для OpenCart весьма популярен в мире. Он позволяет делать импорт экспорт информации интернет магазина на OpenCart в формате популярного табличного редактора Excel. Ну и не стоит забывать, что он абсолютно бесплатен. Видимо это в купе с хорошим функционалом стало причиной популярности именно этого модуля. Только с официального сайта модуль скачали около 40 000 раз.
Использование XLS формата обмена данными по сравнению с CSV обеспечивает возможность передачи HTML кода в ячейках. Проблема CSV в том, что кавычки, которыми обычно экранируются начало и конец ячейки могут быть так же частью HTML кода. Это приводит к нарушению целостности и ошибкам обмена данных. XLS формат помогает избежать этих проблем.
Фунционал модуля Import/Export Tool действительно широк. Можно совершать обмен данными каталога (опции, атрибуты, товары, категории), заказов (заказчики, заказы), то, что не достает можно заказать у его разработчиков за доп. плату.
Особенности поля «Производитель» при импорте из 1С
Много вопросов у всех вызывает работа именно с полем Производитель (Manufacturer
). Сегодня о нем и поговорим. В OpenCart в таблице товаров имена производителей не хранятся и это разумно. Указывается только ID
производителя, а сами производители это целых три отдельных таблицы базы данных. Тут собака и зарыта. Если взглянуть на пример таблицы экспорта модуля Import/Export Tool, то можно убедиться, что в колонке manufacturer
указан не ID, а вполне себе человеческое название:
Разработчики модуля не поленились, при импорте товаров вам не нужно знать ID производителя, достаточно лишь указать его имя. Однако, если вдруг такого производителя не окажется в OpenCart, модуль выдаст не просто ошибку, а выдаст белый экран (500-я ошибка сервера, проверено на 1.5.x и 2.x OpenCart). Обратившись к логу ошибок OpenCart вы увидите ошибку:
2017-08-04 23:08:17 - PHP Notice: Undefined index: &DKNY in /home/******/******.com/www/admin/model/tool/export_import.php on line 854 2017-08-04 23:08:17 - PHP Notice: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''data/fTov0000002306.jpeg',1,30.81,0,NOW(),NOW(),NOW(),0,7,1,0,0,0,0,0,'4','0','' at line 1<br />Error No: 1064<br />INSERT INTO `oc_product` (`product_id`,`quantity`,`sku`,`upc`,`ean`,`jan`,`isbn`,`mpn`,`location`,`stock_status_id`,`model`,`manufacturer_id`,`image`,`shipping`,`price`,`points`,`date_added`,`date_modified`,`date_available`,`weight`,`weight_class_id`,`status`,`tax_class_id`,`viewed`,`length`,`width`,`height`,`length_class_id`,`sort_order`,`subtract`,`minimum`) VALUES (318724,0,'','','','','','','',2,' ',,'data/fTov0000002306.jpeg',1,30.81,0,NOW(),NOW(),NOW(),0,7,1,0,0,0,0,0,'4','0','1','1'); in /home/******/********.com/www/system/database/mysql.php on line 49
Чтобы избежать этих ошибок и успешно выполнить импорт обязательно проверьте, чтобы список всех производителей уже есть в каталоге вашего OpenCart.
На момент написания статьи у разработчиков модуля вышла новая версия под OpenCart 2.x, где эта проблема была нивелирована, т.е. при отсутствии производителя с таким именем, поле просто игнорируется, а процесс импорта продолжается.
Dolce & Gabbana
Все поля кроме Manufacturer в этом модуле проходят через функцию, которая преобразует символы вроде &, <, >, ‘, » в их HTML код, что помогает корректно хранить информацию в БД:
« | " | " | двойная кавычка |
& | & | & | амперсанд |
« | « | « | левая типографская кавычка (кавычка-елочка) |
» | » | » | правая типографская кавычка (кавычка-елочка) |
‹ | ‹ | одиночная угловая кавычка открывающая | |
› | › | одиночная угловая кавычка закрывающая | |
′ | ′ | ′ | штрих (минуты, футы) |
″ | ″ | ″ | двойной штрих (секунды, дюймы) |
‘ | ‘ | ‘ | левая верхняя одиночная кавычка |
’ | ’ | ’ | правая верхняя одиночная кавычка |
‚ | ‚ | ‚ | правая нижняя одиночная кавычка |
“ | “ | “ | кавычка-лапка левая |
” | ” | ” | кавычка-лапка правая верхняя |
„ | „ | „ | кавычка-лапка правая нижняя |
Однако поле Manufacturer через эту функцию не прогоняется, в результате, если у вас есть бренд Dolce & Gabbana или Marc & Spencer, он не импортируется, а скрипт выдаст ошибку импорта и ничего не загрузит. Поэтому на этапе выгрузки из 1С или табличных прайс листов делайте замену амперсанта на HTML код &
На этом сегодня все! Желаем успешных импортов-экспортов :)
Да большинству пользователей и не нужен этот «производитель».