Тонкая настройка импорта в JBZoo

9.8/10 оценка (6 голосов)

Начиная с JBZoo 2.0 у нас появилась собственная система импорта в формате CSV. Основные его отличия от стандартного импорта компонента Zoo хорошо описаны в новости.

В данной статье мы рассмотрим опции и процесс только для материалов. Вся эта информация актуальна и для категорий. Но перед тем как мы приступим вам необходимо знать о нескольких важных моментах.

  • Импорт работает только в UTF-8 кодировке (желательно без BOM). Это не прихоть разработчиков JBZoo, т.к. сайты на Joomla всегда работают именно в этой кодировке.

  • Не все десктопные программы хорошо понимают UTF-8. Например, часто замечаются проблемы с MS Excel. Для редактирования рекомендуем вам использовать OpenOffice (он же LibreOffice ). Это очень хорошая бесплатная альтернатива.

  • После окончания процесса загрузки нет необходимости делать индексацию сайта. Она проходит автоматически, в фоновом режиме.

  • Скорость импорта очень сильно зависит от количества загружаемых данных, типов полей, их количества и объема самого CSV файла (и конечно же качества вашего хостинга). Возможно лучше будет загружать контент по частям. Тут готового рецепта для соотношения скорости и удобства нет — все очень индивидуально.

Как редактировать CSV файл локально?

На скриншоте показан пример с опциями по умолчанию для популярной программы OpenOffice. Во всех других программах настройки аналогичные. Обратите внимание на выделенные пункты.

Пример с опциями программы OpenOffice Calc

Настройка импорта JBZoo

Кнопку Импорт не сложно найти в Zoo в разделе с инструментами.

Панель управления JBZooЧто будете импортировать?

Опции импорта — Шаг #1

На первом шаге мы задаем только параметры для распознавания CSV файла:

Шаг 1. Параметры CSV файла

  1. Выберите CSV (не архив, а именно текстовый *.csv файл).

  2. Заголовок — название (шапка) таблицы. Укажите, будет ли оно отображаться на странице или нет. Обычно он есть в качестве служебной информации.

  3. Разделитель — символ, отделяющий данные одной ячейки от другой. По умолчанию — это запятая.

  4. Ограничитель — символ, который обрамляет данные одной ячейки. По умолчанию — двойная кавычка.

Разделители в форматировании CSV файлаВ файле форматирование выглядит следующим образом. Красным цветом — Разделитель. Синим цветом — Ограничитель. Каждая строка — это отдельная запись (материал).

 

Обычно, на этом шаге ничего менять не нужно. Только загружаете файл и переходите на следующий шаг.

Опции импорта — Шаг #2

На втором шаге нужно указать соответствие между колонками CSV файла и полями материала. Слева будет показан список из вашего CSV-файла, справа (после того как выберите тип) поля из конкретного типа материала.

Сверху перечислены очень важные опции импорта:

Шаг 2. Настройки импорта

  1. Каталог (оно же приложение, вкладка, App), в который будут загружаться материалы.

  2. Тип материала. От него будет зависеть набор полей под пунктом 6.

  3. Ключ при импорте — поле, по которому связываются записи из CSV с данными сайта.

    • ID (число) — уникальный идентификатор (порядковый номер), сгенерированный в рамках вашего сайта.

    • Название — опция, которая ищет точное совпадение по имени материала или категории.

    • Псевдоним (алиас) — уникальный текстовый ключ, обычно это название материала латиницей без спец символов в нижнем регистре.

    • Артикул — данные из специального элемента цены JBPrice Advance (и только его!).

Обязательно в соответствии с этой опцией нужно выставить связь полей между CSV и материалом ниже. Иначе при импорте будут создаваться новые материалы, т.к. поиск по ключу не даст результатов.

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

  1. Наполнение radio и т.д. При импорте данных для жесткого списка важно чтобы значения в CSV совпадали с заранее настроенными типами на сайте. Это не всегда удобно. Настройка позволяет автоматически «расширять» список опций в указанных элементах. Таким образом, уменьшается ручная работа и вероятность что-то пропустить. Поддерживаются только стандартные элементы select, checkbox, radio и каскадный селект.

  2. Записи, которых не было в файле. Для 100% синхронизации сайта с внешней базой данных (например, 1С) полезно, чтобы импорт не только добавлял/изменял существующие материалы, но и удалял/отключал те, которых нет. Это позволяет сделать опция под номером 5.

  3. Это список соответствий между колонками CSV и полями из материала.

Импорт — Шаг #3

Шаг 3. Запуск процесса загрузкиНа третьем шаге запустится непосредственный процесс загрузки материалов на ваш сайт. Не закрывайте это окно, до тех пор пока не появится сообщение, что все завершено.

Внимание! На последнем шаге, после 100% выполнится дополнительный запрос на сервер, который удаляет, либо скрывает, материалы (зависит от настроек второго шага). Если материалов очень много, то это может занять довольно большой промежуток времени. Поэтому, не закрывайте окно импорта раньше времени!

Если вы внезапно увидели сообщение о ошибке под прогресс баром, то не нужно паниковать. Это ошибка (и совсем не обязательно от импорта). Просто сделайте скриншот и покажите его техподдержке. В этом случае импорт остановится и его лучше не перезапускать, до выяснения обстоятельств.

Примеры форматирования некоторых полей

Практически каждый тип элемента у Zoo или JBZoo имеет собственный формат данных. Соответственно, это может влиять на форматирование данных для импорта внутри CSV. Чтобы узнать наверняка, просто сделайте экспорт нужного материала и используйте его в качестве примера. Ниже мы подробно разберем особые типы данных в JBZoo.

Цены

Начиная с версии v2.0 для поля с ценой рекомендуется использовать элемент JBPrice Advance. Он поддерживает разные способы наполнения из CSV.

Допустим, мы хотим наполнить цены следующим образом.

Пример наполнения цены

Наиболее полный формат

Для первой ячейки (базовая информация)

balance:-1;new:0;sku:Atr.ABC123;value:1000;currency:RUB;discount:-50;discount_currency:RUB;description:Описание товара

Для следующий ячейки (вариации цен)

balance:-1;value:+50;currency:%;sku:Atr.ABC123;param1:intel;description:Отличный выбор

Этот формат наиболее длинный, но может полностью изменять значения элемента.

Как видите, он представляет из себя набор ключ1:значение1;ключ2:значение2.

Указывать все ключи не обязательно — на свое усмотрение. Например, можно не писать переменную currency, тогда импорт сохранит значение под валютой по умолчанию из настроек элемента. Либо, если какое из значений пустое, можно его не указывать совсем.

Так в вариации есть param1, но нет param2 и param3, потому что их заполнять не нужно.

Специальные символы, такие как «:» и «;» используются в качестве разделителей.

Если у вас этот символ используется в описании, то нужно заменить его на %col% или %sem% соответственно.

Упрощенный формат

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

1 Вариант

Atr.ABC123|||1|||1000|||Описание товара — Артикул, Флаг наличия на складе, Цена, Описание.

2 Вариант

Atr.ABC123|||1000|||Описание товара — Артикул, Цена, Описание.

3 Вариант

1000|||Описание товара — Цена, Описание.

4 Вариант

1000 — Только цена.

Важное о ценах!

  • В CSV файле первым столбцом должна идти базовая информация, а далее её вариации (если есть).

  • Будьте внимательны при подготовке CSV-файла, если есть сомнения — делайте бекапы базы данных или всего сайта.

  • Цена работает как множественное поле, по этой причине в импортируемом файле будет несколько колонок. Это добавляет удобства при редактировании.

  • Импорт для старого JBPrice (не Advance) поддерживается, но только в упрощенном формате.

Категория

Принадлежность материала к категории можно указать несколькими способами.

Полный вариант

Название 1|||alias-1///Название 2|||alias-2///Название 3|||alias-3

Указывает на полный путь категорий, к которой принадлежит материал. Явная принадлежность будет сохранена последней категории. Если нужно указать несколько, то поле категорий должно быть множественным.

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

Укороченный вариант

Название 1///Название 2///Название 3

То же самое что и полный, но без алиасов.

Простейший вариант

Название 1 или alias-1

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

Другие примеры форматирования

Логические значения. В основном используется для простейших переключателей, например, включить или выключить комментарии. Для указания положительного значения можно использовать такие значения как y, yes, on, 1 и любые положительные числа. Все остальное рассматриваются как Нет.

Поля даты. Рекомендуется указывать в формате Y-m-d H:i:s, например 1999-12-31 23:59:59. Так же подойдет любой другой формат, который может распознать PHP функция strtotime.

Связанный материал или категория. В полях, которое указывают на связь с другим материалом должен содержать псевдоним (алиас). Сделать связь по ID не получится. Такой поддержки нет из логических побуждений и большом неудобстве.

Автор (пользователь). В поле можно указать либо явный ID пользователя, либо произвольное слово, которое сохранится как псевдоним автора.

Страна. Для элемента страны указывается двухбуквенный код. Например, для США — US.

Полный список всех стран можно найти в этом файле /administrator/components/com_zoo/framework/helpers/country.php.

Галереи, картинки, файлы. Есть группа элементов, которые могу хранить в себе путь до файла или папки. Для этих элементов нужно указать такой же путь, что и указывается в панели управления. Желательно без лишних слешей. При импорте существование файлов и папок никак не проверяются.

Каскадный селект. Каждая ячейка должная указывать на один из вариантов каскадного селекта. Например, так:

Великобритания|||Эдинбург|||Стрит #5
Великобритания|||Эдинбург
Великобритания

Модуль Joomla и WidgetKit. Здесь жесткая привязка по ID из компонента WidgetKit или один менеджера модулей Joomla.

Полезно знать

  • Если вы не знаете, как выглядит то или иное поле в формате CSV, то попробуйте наполнить его и экспортировать.

  • Каждый шаг импорта обрабатывает не более 25 материалов. В принципе, можно и больше, но такая порция выбрана чтобы с высокой вероятностью попасть в ограничения по времени и памяти большинства хостингов.

Импорт, Цена, Экспорт

У меня остались вопросы, где я могу их задать?

Вы можете обратиться на наш специальный форум техподдержки JBZoo. Если у вас нет активного аккаунта со знаком «плюс» в тарифном плане, то вы можете задать свой вопрос в одном из этих разделов или на любой из наших контактов. Форум специально предназначен для JBZoo, приоритет и скорость ответа там выше.