Skip to content
Impex / Impex3
Impex / Impex3
Импорт и экспорт ресурсов MODX Revolution / MODX 3 и товаров miniShop2 / miniShop3
  1. Компоненты
  2. Impex / Impex3
  3. Конфигурация

Конфигурация

Конфигурации импорта и экспорта — PHP-файлы в {core_path}components/impex/config/ (примеры идут в комплекте).

Пример:

php
<?php
$impex_config['content_row'] = [
    ['Категории', 5, 'categories'],
    ['Наименование', 'pagetitle', 'resource'],
    ['Артикул', 'article', 'ms'],
    ['Расширенный заголовок', 'longtitle', 'resource'],
    ['Краткое описание', 'introtext', 'resource'],
    ['Содержимое', 'content', 'resource'],
    ['Цена', 'price', 'ms'],
    ['Производитель', 'vendor', 'ms'],
    ['Новинка', 'new', 'ms'],
    ['Теги', 'tags', 'ms'],
    ['Цвет', 'color', 'ms'],
    ['Материал', 'material', 'msoption'],
    ['На складе', 1, 'tv'],
    ['Галерея', 'images/import/', 'msgallery'],
    ['Дополнительные категории', '', 'mscats'],
];

// значения по умолчанию при импорте или проверка при экспорте
$impex_config['content_default'] = [
    ['template', 2],
];

// класс товаров (msProduct / modResource)
$impex_config['resource_class'] = 'msProduct';

// класс категорий (msCategory / modResource / CollectionContainer)
$impex_config['category_class'] = 'msCategory';

// поле идентификации категории (если указывается напрямую, а не цепочкой)
$impex_config['category_id_field'] = '';

// по какому полю проверять соответствие товара при обновлении
$impex_config['chk_field'] = ['pagetitle', 'resource'];

// пропускать несуществующие ресурсы (только обновление, без создания)
$impex_config['skip_new'] = false;

// первая строка — названия полей
$impex_config['include_captions'] = true;

// разделители для MIGX-полей: между элементами, между полями внутри элемента
$impex_config['migx_separators'] = ['||', '--'];

// ресурсов за один проход; 0 — без ограничения
$impex_config['batch_import'] = 100;

// поле для генерации alias при импорте (пусто — alias только из файла)
$impex_config['alias_field'] = 'pagetitle';

В файле должен быть массив $impex_config с ключами ниже.

$impex_config['content_row']

Связь колонок файла с полями MODX / miniShop3. Формат элемента:

text
['Название колонки', 'ID или имя поля', 'тип', ['поля MIGX']]

Четвёртый элемент массива — только для типа migx.

Поддерживаемые типы данных

ТипНазначение
categoriesЦепочка категорий (первая колонка)
resourceПоля ресурса MODX
tvTV-параметр
migxTV типа MIGX
msПоля товара miniShop3
msoptionОпция товара (опции категории)
msgalleryГалерея miniShop3
mscatsДополнительные категории товара

categories

Обязательно первая колонка в content_row. Второй элемент — ID шаблона категории:

php
['Категории', 5, 'categories'],

В файле категории — цепочка через ||:

text
Категория 1||Категория 2||Категория 3

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

При импорте проверяется наличие категорий на сайте; недостающие создаются с шаблоном из конфига и классом category_class.

resource

Стандартные поля ресурса: pagetitle, longtitle, published, alias и т.д.

php
['Наименование', 'pagetitle', 'resource'],

tv

TV-параметр. Второй элемент — имя или ID (ID предпочтительнее).

php
['На складе', 1, 'tv'],

migx

TV типа MIGX. Третий элемент — массив имён полей из конфигурации MIGX:

php
['Характеристики', 'chars', 'migx', ['title', 'value']],

Пример значения в ресурсе:

text
Материал = Хлопок
Цвет = Зелёный
Размер = XL

При экспорте (разделители по умолчанию из migx_separators):

text
Материал--Хлопок||Цвет--Зелёный||Размер--XL

При импорте строка конвертируется в JSON:

json
[
  {"MIGX_id":0,"title":"Материал","value":"Хлопок"},
  {"MIGX_id":1,"title":"Цвет","value":"Зелёный"},
  {"MIGX_id":2,"title":"Размер","value":"XL"}
]

Разделители настраиваются в migx_separators.

ms

Поля товара miniShop3 (modx_ms3_products): article, price, old_price, weight, vendor, tags, new и др.

Множественные значения (теги, цвета) через ||:

text
Тег01||Тег02||Тег03

Производитель (vendor) — название. Если производителя нет на сайте, он создаётся при импорте.

msoption

Опция товара. Множественные значения — через ||.

msgallery

Галерея miniShop3. Пути в файле через ||:

text
image01.jpg||image02.jpg||image03.jpg

Второй элемент — директория-источник относительно корня сайта:

php
['Галерея', 'images/import/', 'msgallery'],

Пустая строка — источник по умолчанию {assets_url}components/impex3/images/.

При экспорте данные из modx_ms3_product_files. В файл попадают пути к основным изображениям в корне папки товара. Пример структуры на диске:

text
assets/images/products/25/
  small/
  webp/
  01.jpg
  02.jpg
  03.jpg

В файл: 25/01.jpg||25/02.jpg||25/03.jpg.

Для замены изображений (режим Обновить всё) загрузите файлы в источник, например:

text
images/import/25/01.jpg
images/import/25/02.jpg
images/import/25/03.jpg

и укажите images/import/ в конфиге.

mscats

Дополнительные категории miniShop3 (вкладка Категории в редакторе товара). Значения — ID категорий. Второй элемент — разделитель (по умолчанию ||):

php
['Дополнительные категории', '|', 'mscats'],

Пример в файле для категорий 43, 48, 56: 43|48|56.

Другие настройки

$impex_config['content_default']

Значения по умолчанию при импорте и экспорте:

php
$impex_config['content_default'] = [
    ['template', 6],
    ['published', 1],
    ['show_in_tree', 1],
];

Если значения нет ни здесь, ни в content_row, скрипт подставляет системные настройки MODX и miniShop3 (шаблон товара, публикация, видимость в дереве). Поля можно добавить и в content_row:

php
['Публиковать', 'published', 'resource'],

$impex_config['resource_class']

Класс создаваемого ресурса. Товары miniShop3: msProduct. Обычные ресурсы: modResource.

$impex_config['category_class']

Класс категории: msCategory, modResource или CollectionContainer (Collections).

$impex_config['category_id_field']

Поле для поиска родительской категории, если категории заданы не цепочкой, а одним значением.

$impex_config['chk_field']

Поле для поиска ресурса при обновлении: ['имя поля', 'тип'].

  • Типы ms и tv — поиск только по значению (оно должно быть уникальным).
  • Тип resource (например pagetitle) — учитывается ещё и родитель.

Пример для артикула:

php
$impex_config['chk_field'] = ['article', 'ms'];

$impex_config['skip_new']

true — не создавать новые ресурсы, только обновлять существующие.

$impex_config['include_captions']

true — первая строка файла содержит заголовки колонок.

$impex_config['migx_separators']

php
$impex_config['migx_separators'] = ['||', '--'];

Первый элемент — между элементами MIGX, второй — между полями внутри элемента.

Пример для MIGX с полями image, title, text, link:

php
['Преимущества', 'benefits', 'migx', ['image', 'title', 'text', 'link']],

Строка в файле:

text
icons/icon01.svg--Низкие цены--Мы держим низкие цены--[[~5]]||icons/icon02.svg--Богатый опыт--У нас большой опыт--[[~6]]

$impex_config['batch_import']

Сколько строк обрабатывать за один проход. 0 — без лимита. Уменьшите значение, если сервер не успевает (особенно с галереей miniShop3).

$impex_config['alias_field']

Поле для генерации alias у нового ресурса. Пустая строка — alias только из файла или колонки:

php
['Псевдоним', 'alias', 'resource'],