Особенности модуля Import/Export Tool для OpenCart

OpenCart
1 мин. на чтение

Модуль 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 код, что помогает корректно хранить информацию в БД:

&quot; &#34; двойная кавычка
& &amp; &#38; амперсанд
« &laquo; &#171; левая типографская кавычка (кавычка-елочка)
» &raquo; &#187; правая типографская кавычка (кавычка-елочка)
&#8249; одиночная угловая кавычка открывающая
&#8250; одиночная угловая кавычка закрывающая
&prime; &#8242; штрих (минуты, футы)
&Prime; &#8243; двойной штрих (секунды, дюймы)
&lsquo; &#8216; левая верхняя одиночная кавычка
&rsquo; &#8217; правая верхняя одиночная кавычка
&sbquo; &#8218; правая нижняя одиночная кавычка
&ldquo; &#8220; кавычка-лапка левая
&rdquo; &#8221; кавычка-лапка правая верхняя
&bdquo; &#8222; кавычка-лапка правая нижняя

Однако поле Manufacturer через эту функцию не прогоняется, в результате, если у вас есть бренд Dolce & Gabbana или Marc & Spencer, он не импортируется, а скрипт выдаст ошибку импорта и ничего не загрузит. Поэтому на этапе выгрузки из 1С или табличных прайс листов делайте замену амперсанта на HTML код &amp;

На этом сегодня все! Желаем успешных импортов-экспортов :)

Игорь Чишкала
Директор по технологиям в SoftForge. Люблю ИТ, пишу технические статьи в этом блоге или для сайта фриланс-биржи Upwork. Кодю на PHP с использованием фреймворков Laravel или Symfony.
Оцените автора
Авторский блог Игоря Чишкалы
Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

  1. Виктор

    Да большинству пользователей и не нужен этот “производитель”.

    Ответить