Перейти к содержимому


Фотография
* * * - - 2 Голосов

Решение некоторых проблем с импортом в формате CSV (+хак)

рецепт импорт import csv

Сообщений в теме: 78

#1 SmetDenis

SmetDenis

Отправлено 19 March 2013 - 09:45

В ходе разработки собственной версии импорта для Zoo со своим "блэкджеком и плюшками"" пришлось очень подробно изучить существующий код от бесплатного Zoo.


****************************************************************************************************
Некоторые выводы и развеивание мифов. (в дополнение к этому топику)

1. CSV формат позволяет обновлять уже существующие материалы.
Для этого у вас должно быть поле с ID материала. Не забываем его указывать во время импорта.
6f14f1f_200x0.jpg
Поле должно содержать только цифры, никаких лишних символов (пробелы итд).
Если материал не будет найден в этом каталоге по ID, то будет создан новый.
В случае с 1C это может быть не очень удобно, но тем не менее я точно знаю что не сложно сделать внутри 1С новое поле, в котором будет хранится ID материала на сайте.



2. CSV формат позволяет обновлять только часть информации материала.
Тут все очень просто. Указываете только те поля, которые нужно обновить (например цена).
Таким образом ваш файл должен содержать как минимум 3 поля ---> "Id материала", "Название", <Ваше поле>
Не указанные поля не будут изменены, если вы все делаете правильно.



3. Формат CSV поддерживает множественные поля
Для этого нужно сделать несколько полей для одного и того же элемента материала.
В процессе импорта указать для одного и того же поля материала несколько полей из CSV.
a47bed9_1280x0_200x0.jpg



4. У импорта в CSV нет проблем с кодировками
Используйте всегда кодировку только UTF-8 без BOM.
C ним успешно справляется любой офисный пакет. Конвертировать можно через Notepad++ (например)



5. CSV может загрузить большой объем данных
Встроенных ограничений нет, не было и не будет.
Выполнение долгого сценария на сайте может упираться в основном в 2 вещи

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



6. Не все типы полей можно загрузить
Согласен. Решение во второй части этого топика поможет вам с импортом полей от JBZoo.
Если у вас собственное особое поле и хоть какие-то маломальски понимания в PHP, то посмотрите этот топик.
Там можно найти что и где нужно дописать в файлах ядра Zoo. По тому же принципу сделан хак ниже.



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




****************************************************************************************************
Хак для загрузки значений элементов JBZoo

Скачайте архив и распакуйте по верх своего сайта с заменой - import-zoo-jbzoo-hack-v0.1.zip
Желательно использовать последнюю версию Zoo (не ниже 3.0.0).
Хак содержит дополнение - новые товары будут опубликованы (раньше добавлялись скрытыми).

Так же в архиве можно найти пару примеров:

  • import-example.csv - Различные примеры наполнения для элементов JBZoo
  • import-onlyprices.csv - Пример файла для обновления только цен

Замечания по полям
JBPrice
"Art123|||1|||10000|||Оптом" -  наиболее полный формат, который включает - артикул, наличие на складе, первую цену и её описание.
"Art123|||10000|||Оптом" -  Включает - артикул, первую цену и её описание.
"10000|||Оптом" -  Включает - первую цену и её описание.
"10000" -  Включает только цену
Если у вас поле цены множественное и вы хотите указать артикул, то полный формат должен быть самый первым (левым) в файле CSV.

JBImage
Указывается только относительный путь до картинки. Поддерживается множественность.

JBSliderNivo и JBGalery
Указывается только название папки. Оно совпадает с предложенными вариантами из селекта при редактировании материала.

JBSelectCascade
Указывается вложенность через разделитель "|||". Поддерживается множественность.
Полную вложенность указывать не обязательно.

Пример форматирования файла CSV для разный полей JBZoo
 

"id","Наименование","Цена (полная)","Цена (с описанием)","Цена (простая)","Каскадный селект (jbselectcascade)","Каскадный селект (jbselectcascade)","Картинка (Jbimage)","Картинка (Jbimage)","Слайдер (jbslidernivo)","Галерея (jbgalery)"
30487,"Товар #1","Art123|||1|||123|||Оптом","120|||В розницу",100,"Великобритания|||Эдинбург|||Стрит #5","Великобритания","images/1.jpg","images/3.jpg","banners","banners"
30486,"Товар #2","Art3456|||0|||150|||Оптом","120|||Без доставки",110,"Великобритания|||Эдинбург","Великобритания|||Эдинбург","images/2.jpg","images/4.jpg","banners","banners"

Пример настроек для редактирования файла CSV через Open office.
Для MS Office настройки будут схожие, но интерфейс немного отличный скриншота.
5f10e63_200x0.jpg


--------
Да хранят вас бекапы!
 
 
Скачать хак
Прикрепленный файл  import_hack_(fix_jbgallery).zip   7.25К   370 Количество загрузок:


Сообщение отредактировал SmetDenis: 24 July 2013 - 08:58

  • 1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#2 registr

registr

Отправлено 20 March 2013 - 05:13

Огромаднейшее спасибо!!!
Но добро наказуемо:), теперь пойдут вопросы, я начну пожалуй:):
Можно ли и как добавлять категории-подкатегории? Про картинки категорий боюсь спрашивать но мало ли...

  • 0

#3 SmetDenis

SmetDenis

Отправлено 20 March 2013 - 05:33

Огромаднейшее спасибо!!!
Но добро наказуемо:), теперь пойдут вопросы, я начну пожалуй:):
Можно ли и как добавлять категории-подкатегории? Про картинки категорий боюсь спрашивать но мало ли...

Лучше категории создать зарнее.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#4 registr

registr

Отправлено 20 March 2013 - 05:57

можно, просто писать Категория///Подкатегория.
А вот с галереей и слайдером не получилось: в настройках галереи и слайдера исходная директория стоит images  положил галерею в папку images/gallery/1
как правильно прописывать в файле: images/gallery/1 или просто gallery/1
  • 0

#5 registr

registr

Отправлено 20 March 2013 - 06:14

Новые категории хорошо бы чтоб тоже сразу публиковались.
Поле Бренд (Select) - не добавляется, пробовал и новый вписывать, и тот что уже в списке
  • 0

#6 SmetDenis

SmetDenis

Отправлено 20 March 2013 - 06:24

можно, просто писать Категория///Подкатегория.
А вот с галереей и слайдером не получилось: в настройках галереи и слайдера исходная директория стоит images  положил галерею в папку images/gallery/1
как правильно прописывать в файле: images/gallery/1 или просто gallery/1

Читайте внимательнее. Относительный путь нужен.

Новые категории хорошо бы чтоб тоже сразу публиковались.
Поле Бренд (Select) - не добавляется, пробовал и новый вписывать, и тот что уже в списке

Нужно указывать ключ, а не текст. Смотрите настройки select
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#7 registr

registr

Отправлено 20 March 2013 - 12:52

по полю Select - "указывать ключ".
Не смог разобраться с загрузкой селектов: как их правильно загружать? Есть сайт с залитыми товарами, чтоб добавить к ним селекты как правильно прописать их в цсв файле? Напимер есть поле ID, Наименование товара, Категория и надо 2 селекта: Тип товара и переход на список ГОСТОВ, вот чтоб было понятней: kpgroup.com.ua
Не могу понять как сделать добавление теперь к этим товарам селектов? Будут ли добавляться они сразу в поле селектов или надо предварительно заполнить поле селектами а потом уже загружать цсв с такими же названиями?
  • 0

#8 registr

registr

Отправлено 21 March 2013 - 06:49

С селектами подскажите кто-нибудь, не получается совсем, как в цсв прописать, есть наименование, категрия и надо добавить 2 поля селектов допустим Тип Товара - первое, ГОСТ - второе. И надо ли предварительно названия селектов вносить в поле на сайте?
  • 0

#9 SmetDenis

SmetDenis

Отправлено 21 March 2013 - 10:34

Селекты должны быть созданы заранее. Указывать нужно значение а не текст (еще раз говорю).
Изображение

Тоже самое и про радио-кнопки.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#10 registr

registr

Отправлено 21 March 2013 - 15:31

я так и думал что по селекту неправильно объяснил:), я имел  в виду заливку  (JBZoo Cascading Select)
  • 0





Темы с аналогичным тегами рецепт, импорт, import, csv

Click to return to top of page in style!