В ходе разработки собственной версии импорта для Zoo со своим "блэкджеком и плюшками"" пришлось очень подробно изучить существующий код от бесплатного Zoo.
****************************************************************************************************
Некоторые выводы и развеивание мифов. (в дополнение к этому топику)
1. CSV формат позволяет обновлять уже существующие материалы.
Для этого у вас должно быть поле с ID материала. Не забываем его указывать во время импорта.
Поле должно содержать только цифры, никаких лишних символов (пробелы итд).
Если материал не будет найден в этом каталоге по ID, то будет создан новый.
В случае с 1C это может быть не очень удобно, но тем не менее я точно знаю что не сложно сделать внутри 1С новое поле, в котором будет хранится ID материала на сайте.
2. CSV формат позволяет обновлять только часть информации материала.
Тут все очень просто. Указываете только те поля, которые нужно обновить (например цена).
Таким образом ваш файл должен содержать как минимум 3 поля ---> "Id материала", "Название", <Ваше поле>
Не указанные поля не будут изменены, если вы все делаете правильно.
3. Формат CSV поддерживает множественные поля
Для этого нужно сделать несколько полей для одного и того же элемента материала.
В процессе импорта указать для одного и того же поля материала несколько полей из CSV.
4. У импорта в CSV нет проблем с кодировками
Используйте всегда кодировку только UTF-8 без BOM.
C ним успешно справляется любой офисный пакет. Конвертировать можно через Notepad++ (например)
5. CSV может загрузить большой объем данных
Встроенных ограничений нет, не было и не будет.
Выполнение долгого сценария на сайте может упираться в основном в 2 вещи
- малый объем выделенной оперативной памяти
- ограничения на время исполнения PHP, либо обращайтесь к хостеру
В крайнем случае, всегда легко можно разбить файл импорта на несколько частей, либо делать импорт на локальной машине.
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 настройки будут схожие, но интерфейс немного отличный скриншота.
--------
Да хранят вас бекапы!
Скачать хак
import_hack_(fix_jbgallery).zip 7.25KB
370 downloads
Edited by SmetDenis, 24 July 2013 - 08:58.