Документация Shopkeeper 3.x

CatalogFill - Импорт / Экспорт

Описание

Импорт/экспорт товаров (документов MODX) в/из CSV, XLS, XLSX.

Возможности

  • Импорт и экспорт товаров (документов MODX).
  • Импорт и экспорт данных для любых лаблиц БД (в т.ч. созданных с помощью MIGXDB).
  • Поддерживаются форматы файлов для импорта и экспорта: CSV, XML (только импорт), XLS, XLSX.
  • Простая конфигурация. Можно настроить какой столбец куда (контент/TV-параметр) импортировать.
  • Возможность создания конфигурационных файлов для разных задач. Конфигурацию можно выбрать перед импортом и экспортом.
  • Удобная загрузка файлов.
  • Режимы обновления (очистка до импорта) и добавления.
  • Архивирование файлов. Все импортированные и экспортированные файлы хранятся на диске. Их можно удалить в любой момент.
  • Поддержка категорий. Неограниченная вложенность.
  • Возможность обновления данных товаров без их удаления (проверка соответствия по полю или значению TV).
  • Возможность загрузки товаров по группам (можно подстроить под ресурсы сервера).

Требования

  • MODX Revolution 2.1 или выше
  • кодировка сайта UTF-8
  • PHP версии 5.2.0 или выше
  • PHP расширение php_zip
  • PHP расширение php_xml
  • PHP расширение php_xmlwriter
  • PHP расширение php_gd2

Установка

  1. Загрузите архив "catalogfill-2.x-pl.transport.zip" в папку core/packages/ вашего сайта. В панеле управления перейти "Система" -> "Управление пакетами" -> "Загрузить дополнения" -> "Искать пакеты локально" -> "Да".

  2. В таблице пакетов появится пакет "catalogfill". Нажать кнопку "Установить".

  3. Закончить установку.

  4. Установить права 0777 на папку /assets/components/catalogfill/files/.

  5. В Настройках системы вашего сайта включите загрузку csv файлов ("Файловая система" -> "Разрешённые к загрузке файлы" (setting_upload_files)).

Инструкция по использованию

  1. Открыть компонент "Импорт/экспорт".
  2. Нажать на поле "Родительский ресурс" и в дереве документов кликнуть документ-категорию, в/из которого нужно импортировать/экспортировать товары.

Импорт

  1. В списке "Файл для импорта" выбрать файл, которые находятся в папке /assets/components/catalogfill/files/ на сервере. Нажав кнопку "Загрузить файлы", можно загрузить новый файл.
  2. Выбрать конфигурацию для импорта в списке и нажать кнопку "Импортировать". В браузере появится индикация выполнения загрузки, нужно подождать завершения операции.

Экспорт

  1. В дереве документов выберите родительский ресурс (категорию), из которой нужно экспортировать товары.
  2. Выбрать конфигурацию экспорта в списке "Конфигурация". Выбрать тип (формат) файла и нажать кнопку "Экспортировать".
  3. Можно сразу скачать файл на жесткий диск вашего компьютера. Также экспортированные файлы хранятся в папке /assets/components/catalogfill/files/.

Конфигурирование

Для импорта и экспорта значений полей (таблица "site_content" в БД) товаров (документов) в конфигурационном файле в массиве $cf_config['content_row'] нужно указать название столбца в файле, имя поля и тип содержимого.
Пример:

1 => array('Наименование',array('pagetitle','content')),

Для импорта и экспорта TV-параметров (таблица "site_tmplvar_contentvalues" в БД) нужно указать название столбца в файле, ID TV-параметра и тип содержимого.
Пример:

2 => array('Цена',array(7,'tv'))

Для импорта и экспорта категорий нужно указать название столбца в файле, ID шаблона категории и тип содержимого.
Пример:

0 => array('Категория',array(7,'category')),

7 - ID шаблона для категории.
Категории в файле должны идти последовательно от верхнего уровня к нижнему.


Предусмотрена возможность обновления данных товаров без их удаления (сохраняются ID). Проверку на соответствие существующего товара и импортируемого можно осуществлять по полям (в БД) товара или значениям его TV-параметров.

Примеры:

$cf_config['imp_chk_field'] = 'pagetitle'; //Если найден товар с названием соответствующим названию импортируемого товара, его данные будут обновлены.
$cf_config['imp_chk_tvid_val'] = 10; //Проверка соответствия происходит по значению TV-парамтера с ID 10. Например это может быть артикул.

Для программистов есть возможность сделать обработку значений перед импортом или экспортом. Смотреть пример в конфигурационном файле.


Имена всех полей таблицы "site_content" (ресурсы) можно посмотреть, например, здесь: http://bobsguides.com/modx-object-full-reference.html#modResource.

Отмена публикации или изменение значения TV для товаров, которых нет в новом прайс-листе

Пример:

$cf_config['imp_before_change'] = '[{"published":0},{}]';

В данном случае перед импортом будет отменена публикация всех вложенных товаров и при импорте товары, которые есть в прайс-листе будут обновлены и опубликованы (использовать параметр "imp_content_default"). Таким образов старые товары будут сняты с публикации (можно также поместить в корзину - "deleted").

$cf_config['imp_before_change'] = '[{"tv.inventory":0},{}]';

В данном случае для всех вложенных товаров будет изменено значение TV-параметра "Кол-во на складе" (inventory) на "0". При импорте если старых товаров нет в новом прайс-листе, они так и останутся с нулевым значением.

Импорт товаров из XML

Для импорта товаров из XML-файла в конфигурационный файл нужно скопировать кусок XML (один товар) со структурой и указать названия полей. Для TV параметров (доп.полей) указывать ID TV с префиксом "tv".

Пример:

$cf_config['imp_xml_structure'] = <<<EOF
<Good>
    <Kod>tv8</Kod>
    <Name>pagetitle</Name>
    <Options>
        <Stock>tv5</Stock>
        <Image>tv2</Image>
    </Options>
    <Prices>
        <RegularPrice>tv1</RegularPrice>
        <OldPrice>tv20</OldPrice>
    </Prices>
</Good>
EOF;

Здесь "pagetitle" - это наименование товара. Остальные поля это TV-параметры.

Если товары находятся дальше первого уровня вложенности, можно указать вложенность в параметре $cf_config['imp_xml_itemsparent_path'].
Пример:

$cf_config['imp_xml_itemsparent_path'] = '/catalog/shop/offers';

При необходимости добавить в файл .htaccess (сервер Apache) строки, чтобы снять ограничения:

php_value memory_limit 128M
php_value upload_max_filesize 15M
php_value post_max_size 15M
php_value max_input_time 1200
php_value max_execution_time 1200