/Импорт товаров в diafan.CMS

Авторы

Дмитрий Афанасьев Марина Дорохина Юлия Афанасьева Дмитрий Селезнев Игорь Ряховский
Дмитрий СелезневДмитрий Селезнев
02 июня 2011 г.
Теги: diafan.CMS

В версии 4.4 diafan.CMS появилась возможность импортировать товары и категории магазина из CSV-файлов. Рассмотрим эту возможность подробнее.

Для начала немного теории, куда же без неё.

CSV (Comma Separated Values – значения, разделённые запятыми) – текстовый формат, предназначенный для представления табличных данных. Каждая строка файла – это одна строка таблицы. Значения отдельных колонок разделяются разделительным символом (delimiter) – запятая (,) или точка с запятой (;). Используемый символ разделителя зависит от установленной в системе локали. В США это запятая, а в России – точка с запятой.

Сразу заметим, что в diafan.CMS в качестве разделителя колонок по умолчанию используется символ точка с запятой. Его можно изменить, но об этом позже.

Кстати Microsoft Excel при сохранении таблицы в CSV-формате также использует разделитель точка с запятой, хотя и говорит нам, что использует запятые.

Теории, пожалуй, достаточно, если недостаточно, то её можно найти в документации и в блоге.

Перейдём к самому важному – к примерам. Начнём с самого простого - импорт нескольких товаров в магазин.

Для этого у нас имеется страница «Новый магазин» с прикреплённым к ней модулем «Магазин».

Использование категорий пока отключено.

Перейдем к пункту «Импорт» и настроим новый импорт.

Импортируем товары

Мы будем импортировать товары, поэтому в поле «Тип» выбираем «Товар».

Зададим также название импорта и раздел сайта, к которому будут прикреплены импортируемые товары и сохраним импорт.

1

Рис. 1. Создание импорта товаров

CSV-файл для этого примера содержит 4 товара.

Коршун;25463;Дневная хишная птица, очень полезная в домашнем хозяйстве.;Питается мясом, любит змей, мелких грызунов.;2500;5

Гусь;268933;У гуся есть клюв, имеющий при основании большую высоту, чем ширину, и оканчивающийся ноготком с острым краем. По краям клюва идут мелкие зубчики.;Гусь отличаются шеей средней длины, довольно высокими ногами, прикрепленными ближе к середине тела, и твердым бугром, или шпорой, на сгибе крыла. Перья и пух сильно развиты.;5000;6

Сова;3463;Сова – птица с большими ушными пучками перьев, очень большим отверстием уха.;Диаметр которого превышает диаметр глаза, полным лицевым диском и сравнительно узким лбом.;2900;8

Лебедь;4563;Оперенье лебедя по своей окраске бывает либо чисто белое, либо серого или чёрного цвета.;Самок и самцов внешне весьма трудно различать. Лебедей отличает более длинная шея, позволяющая в более глубоких водах обыскивать дно в поисках пищи, а также их величина, по которой они являются самыми крупными водными птицами.;3500;10

Пример CSV-файла «Импорт товаров»

Исходя из представленного файла, нам необходимо создать следующие поля:

  1. Название.
  2. Артикул.
  3. Анонс.
  4. Описание товара.
  5. Цена.
  6. Количество.

При создании полей необходимо указать название, тип, категорию поля. Выбрать тип поля предельно просто, для названия товара предназначен тип «Название», артикула – «Артикул» и т.д. Категория поля - это название нашего импорта.

Порядок полей создаваемого импорта должен точно соответствовать порядку колонок в CSV-файле.

Может быть так, что в CSV-файле встречаются колонки, значения которых не нужно импортировать. Допустим, в наш файл добавилось пока не нужная нам информация о производителе. Создадим для неё поле «Производитель» с типом «Пропуск». В этом случае при импорте товаров, ненужная колонка будет успешно пропущена.

Коршун;25463;Дневная хишная птица, очень полезная в домашнем хозяйстве.;Питается мясом, любит змей, мелких грызунов.;2500;ООО. Зоопарк;8

Гусь;268933;У гуся есть клюв, имеющий при основании большую высоту, чем ширину, и оканчивающийся ноготком с острым краем. По краям клюва идут мелкие зубчики.;Гусь отличаются шеей средней длины, довольно высокими ногами, прикрепленными ближе к середине тела, и твердым бугром, или шпорой, на сгибе крыла. Перья и пух сильно развиты.;5000;ООО. Зоопарк;8

Сова;3463;Сова – птица с большими ушными пучками перьев, очень большим отверстием уха.;Диаметр которого превышает диаметр глаза, полным лицевым диском и сравнительно узким лбом.;2900;ООО. Зоопарк;8

Лебедь;4563;Оперенье лебедя по своей окраске бывает либо чисто белое, либо серого или чёрного цвета.;Самок и самцов внешне весьма трудно различать. Лебедей отличает более длинная шея, позволяющая в более глубоких водах обыскивать дно в поисках пищи, а также их величина, по которой они являются самыми крупными водными птицами.;3500;ООО. Зоопарк;8

Пример CSV-файла «Импорт товаров с ненужной колонкой»

2

Рис. 2. Поля для импорта

Вот мы и создали все необходимые поля, теперь осталось только загрузить файл импорта. После загрузки в нашем магазине появилось 4 товара. В доказательство приведу скриншот.

3

Рис. 3. Импортированные товары

Импортируем дополнительные характеристики товаров

Немного усложним задачу. Допустим, у наших товаров есть колонки: цвет и размах крыльев, которые нужно импортировать.

Коршун;25463;Дневная хишная птица, очень полезная в домашнем хозяйстве.;Питается мясом, любит змей, мелких грызунов.;2500;ООО. Зоопарк;8;6;желтый

Гусь;268933;У гуся есть клюв, имеющий при основании большую высоту, чем ширину, и оканчивающийся ноготком с острым краем. По краям клюва идут мелкие зубчики.;Гусь отличаются шеей средней длины, довольно высокими ногами, прикрепленными ближе к середине тела, и твердым бугром, или шпорой, на сгибе крыла. Перья и пух сильно развиты.;5000;ООО. Зоопарк;8;6;желтый

Сова;3463;Сова – птица с большими ушными пучками перьев, очень большим отверстием уха.;Диаметр которого превышает диаметр глаза, полным лицевым диском и сравнительно узким лбом.;2900;ООО. Зоопарк;8;6;желтый

Лебедь;4563;Оперенье лебедя по своей окраске бывает либо чисто белое, либо серого или чёрного цвета.;Самок и самцов внешне весьма трудно различать. Лебедей отличает более длинная шея, позволяющая в более глубоких водах обыскивать дно в поисках пищи, а также их величина, по которой они являются самыми крупными водными птицами.;3500;ООО. Зоопарк;8;6;желтый

Пример CSV-файла «Импорт товаров с доп. характеристиками»

Для начала с помощью инструмента «Характеристики» создадим две дополнительные характеристики товаров нашего магазина. Далее вернемся к нашему импорту и добавим два поля. Теперь в качестве типа мы будем выбирать «Дополнительная характеристика». После выбора данного типа ниже появится выпадающий список с характеристиками, которые мы создали на предыдущем шаге: цвет и размах крыльев. После создания необходимых полей загружаем файл.

4

Рис. 4. Товар, с импортированными характеристиками

Обновляем товары

Рассмотрим следующий случай, когда нам нужно обновлять товары в магазине.

Как мы поступим? Добавим ещё одно поле. На этот раз с типом «Идентификатор». Соответственно в CSV-файле у каждого товара должен быть свой идентификатор - уникальный набор символов, лучше всего числовое значение.

1;Коршун;25463;Дневная хишная птица, очень полезная в домашнем хозяйстве.;Питается мясом, любит змей, мелких грызунов.;2500;ООО. Зоопарк;8;6;желтый

2;Гусь;268933;У гуся есть клюв, имеющий при основании большую высоту, чем ширину, и оканчивающийся ноготком с острым краем. По краям клюва идут мелкие зубчики.;Гусь отличаются шеей средней длины, довольно высокими ногами, прикрепленными ближе к середине тела, и твердым бугром, или шпорой, на сгибе крыла. Перья и пух сильно развиты.;5000;ООО. Зоопарк;8;6;желтый

4;Лебедь;55555;Размах их крыльев достигает двух метров, а вес может превышать 15 кг.;Самок и самцов внешне весьма трудно различать. Лебедей отличает более длинная шея, позволяющая в более глубоких водах обыскивать дно в поисках пищи, а также их величина, по которой они являются самыми крупными водными птицами.;3500;ООО. Зоопарк;8;6;желтый

Пример CSV-файла «Импорт товаров с идентификаторами»

Теперь при повторном импорте, данные о товарах в магазине будут обновлены.

При создании нашего импорта, мы не отметили пункт «Удалить неописанные в файле импорта записи». Если мы отметим его, то при загрузке нового CSV-файла, из магазина будут удалены товары, которые не присутствуют в файле.

Импортируем категории

Далее мы попробуем импортировать категории товаров, из следующего CSV-файла.

1;Птицы;Птицы — животные с перьями, теплокровные, яйцекладущие с позвоночником, чьи передние конечности имеют форму крыльев.;В принципе, все птицы летают, но в настоящее время существует много видов нелетающих птиц. А также у птиц должен быть клюв.
2;Звери;Звери — млекопитающие животные, которые рожают детёнышей без откладывания яиц.;Все звери имеют уши, их детёныши могут кормиться от груди, и все они имеют щиколотку, что увеличивает силу их движений. Звери часто классифицируются по картине срастания зубов. Почти все современные млекопитающие — звери.
3;Водоплавающие;Водоплавающие это живые существа, ведущие водный образ жизни.;К ним относятся все те, кто живут в воде, под водой и над водой.

Пример CSV-файла «Импорт категорий»

Тут всё так же просто, как и с товарами, только при создании импорта нужно указать с тип «Категория». Далее создаём нужные поля и загружаем файл. Разумеется, для магазина должно быть включено использование категорий.

22ee15fbdb618586655fc3ff96940540

Рис. 5. Импортированные категории товаров

Для того, чтобы создать вложенность категорий, необходимо, чтобы в нашем импорте существовали поля с типами «Идентификатор» и «Родитель». В CSV-файле также должны существовать колонки для этих данных. В колонке «Родитель» должны содержаться значения идентификаторов родительских категорий. Если у категории нет родителя, можно оставить эту колонку пустой, либо задать ей нулевое значение.

20;0;Птицы;Птицы – животные с перьями, теплокровные, яйцекладущие с позвоночником, чьи передние конечности имеют форму крыльев.;В принципе, все птицы летают, но в настоящее время существует много видов нелетающих птиц. А также у птиц должен быть клюв.

21;0;Звери;Звери – млекопитающие животные, которые рожают детёнышей без откладывания яиц.;Все звери имеют уши, их детёныши могут кормиться от груди, и все они имеют щиколотку, что увеличивает силу их движений. Звери часто классифицируются по картине срастания зубов. Почти все современные млекопитающие – звери.

22;0;Водоплавающие;Водоплавающие это живые существа, ведущие водный образ жизни.;К ним относятся все те, кто живут в воде, под водой и над водой.

23;21;Крупные звери;Большие животные звери, которые больше человека, собраны здесь. ;Это и домашний крупный рогатый скот и дикие большие звери.

24;21;Мелкие звери;Все пузатая мелочь, вроде зайцев и кошек у нас в этой категории, мелкие звери.

Пример CSV-файла «Импорт категорий с вложенностью»

6

Рис. 6. Импортированные категории товаров, с подкатегориями

Задаем категории у товаров

Теперь мы умеем импортировать категории товаров и сами товары. Для привязки товара к категории нам понадобятся два файла, первый с категориями, второй – с товарами. У каждой категории должен существовать свой идентификатор. У каждого товара должна существовать колонка, со значением идентификатора его категории.

1;20;Коршун;25463;Дневная хишная птица, очень полезная в домашнем хозяйстве.;Питается мясом, любит змей, мелких грызунов.;2500;ООО. Зоопарк;8;6;желтый

2;20;Гусь;268933;У гуся есть клюв, имеющий при основании большую высоту, чем ширину, и оканчивающийся ноготком с острым краем. По краям клюва идут мелкие зубчики.;Гусь отличаются шеей средней длины, довольно высокими ногами, прикрепленными ближе к середине тела, и твердым бугром, или шпорой, на сгибе крыла. Перья и пух сильно развиты.;5000;ООО. Зоопарк;8;6;желтый

4;20;Лебедь;55555;Размах их крыльев достигает двух метров, а вес может превышать 15 кг.;Самок и самцов внешне весьма трудно различать. Лебедей отличает более длинная шея, позволяющая в более глубоких водах обыскивать дно в поисках пищи, а также их величина, по которой они являются самыми крупными водными птицами.;3500;ООО. Зоопарк;8;6;желтый

Пример CSV-файла «Импорт товаров с идентификатором категории»

Далее следует вернуться к настройке импорта товаров. Создадим для него ещё 1 поле с типом «Категория». На этом настройку можно завершить.

В первую очередь следует импортировать файл с категориями. После этого можно загрузить файл с товарами.

Небольшое замечание: недопустимо сосуществование данных о товарах и категориях в одном и том же файле.

Вроде бы все.

Дополнительные настройки

Хотя нет, осталось рассмотреть некоторые дополнительные возможности по настройке импорта.

Для этого следует обратить внимание на файл modules/shop/admin/shop.admin.import.element.php.

В функции upload можно задать значения следующих переменных:

  • $delimiter – разделитель данных (по умолчанию «;»);
  • $encoding – кодировку файла (по умолчанию cp1251);
  • $count_part – количество строк, обрабатываемых за один проход (по умолчанию 500, значение можно сократить, если импорт внезапно прерывается, то есть времени работы скрипта или памяти не хватает на обработку 500 строк).

Улучшаем импорт

При желании и определённых навыках программирования можно осуществлять загрузку изображений для товаров магазина. Для этого нужно хранить на сервере папку с изображениями, а в CSV-файле в одной из колонок указывать имя соответствующего изображения. Ну и соответствующим образом изменить скрипт импорта товаров.

После внесения каких-либо изменений в файл modules/shop/admin/shop.admin.import.element.php, необходимо внести его в список файлов, закрытых для автообновления. Подробнее об этом можно почитать в документации.

В общем, скрипт загрузки товаров, можно всячески улучшать либо своими силами, либо внося свои предложения в личном кабинете.

Комментарии

ГостьАлексей (Semenok)
22 мая 2017 г.
добры
ГостьАлексей (Semenok)
22 мая 2017 г.
добрый день. а картинки можно импортировать?
Марина ДорохинаМарина Дорохина
24 мая 2017 г.

Алексей, да можно. Для этого в типе поля нужно указать "Имена изображений".

Гостьkogdaprosnulasbtogdaiutro (kogdaprosnulasbtogdaiutro)
10 декабря 2018 г.
Доброго времени суток.
Есть ли возможность при импорте товаров загружать изображения по ссылкам с другого сайта?
ГостьАртем (artemshk)
17 марта 2020 г.
Добрый! Почему нет вложения "Пример CSV-файла «Импорт категорий с вложенностью»", т.е. раньше оно видимо было, а потом везде пропало? без него (вложения) практически невозможно по текущему описанию рядовому пользователю с этим делом разобраться. Спасибо!

Чтобы оставить комментарий необходимо авторизоваться на сайте.