
Конфигурация
Конфигурации импорта и экспорта — PHP-файлы в {core_path}components/impex/config/ (примеры идут в комплекте).
Пример:
<?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. Формат элемента:
['Название колонки', 'ID или имя поля', 'тип', ['поля MIGX']]Четвёртый элемент массива — только для типа migx.
Поддерживаемые типы данных
| Тип | Назначение |
|---|---|
categories | Цепочка категорий (первая колонка) |
resource | Поля ресурса MODX |
tv | TV-параметр |
migx | TV типа MIGX |
ms | Поля товара miniShop3 |
msoption | Опция товара (опции категории) |
msgallery | Галерея miniShop3 |
mscats | Дополнительные категории товара |
categories
Обязательно первая колонка в content_row. Второй элемент — ID шаблона категории:
['Категории', 5, 'categories'],В файле категории — цепочка через ||:
Категория 1||Категория 2||Категория 3Цепочка включает родителя, выбранного при импорте. Если первая категория в файле не совпадает с выбранным родителем, скрипт выведет предупреждение.
При импорте проверяется наличие категорий на сайте; недостающие создаются с шаблоном из конфига и классом category_class.
resource
Стандартные поля ресурса: pagetitle, longtitle, published, alias и т.д.
['Наименование', 'pagetitle', 'resource'],tv
TV-параметр. Второй элемент — имя или ID (ID предпочтительнее).
['На складе', 1, 'tv'],migx
TV типа MIGX. Третий элемент — массив имён полей из конфигурации MIGX:
['Характеристики', 'chars', 'migx', ['title', 'value']],Пример значения в ресурсе:
Материал = Хлопок
Цвет = Зелёный
Размер = XLПри экспорте (разделители по умолчанию из migx_separators):
Материал--Хлопок||Цвет--Зелёный||Размер--XLПри импорте строка конвертируется в 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 и др.
Множественные значения (теги, цвета) через ||:
Тег01||Тег02||Тег03Производитель (vendor) — название. Если производителя нет на сайте, он создаётся при импорте.
msoption
Опция товара. Множественные значения — через ||.
msgallery
Галерея miniShop3. Пути в файле через ||:
image01.jpg||image02.jpg||image03.jpgВторой элемент — директория-источник относительно корня сайта:
['Галерея', 'images/import/', 'msgallery'],Пустая строка — источник по умолчанию {assets_url}components/impex3/images/.
При экспорте данные из modx_ms3_product_files. В файл попадают пути к основным изображениям в корне папки товара. Пример структуры на диске:
assets/images/products/25/
small/
webp/
01.jpg
02.jpg
03.jpgВ файл: 25/01.jpg||25/02.jpg||25/03.jpg.
Для замены изображений (режим Обновить всё) загрузите файлы в источник, например:
images/import/25/01.jpg
images/import/25/02.jpg
images/import/25/03.jpgи укажите images/import/ в конфиге.
mscats
Дополнительные категории miniShop3 (вкладка Категории в редакторе товара). Значения — ID категорий. Второй элемент — разделитель (по умолчанию ||):
['Дополнительные категории', '|', 'mscats'],Пример в файле для категорий 43, 48, 56: 43|48|56.
Другие настройки
$impex_config['content_default']
Значения по умолчанию при импорте и экспорте:
$impex_config['content_default'] = [
['template', 6],
['published', 1],
['show_in_tree', 1],
];Если значения нет ни здесь, ни в content_row, скрипт подставляет системные настройки MODX и miniShop3 (шаблон товара, публикация, видимость в дереве). Поля можно добавить и в content_row:
['Публиковать', '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) — учитывается ещё и родитель.
Пример для артикула:
$impex_config['chk_field'] = ['article', 'ms'];$impex_config['skip_new']
true — не создавать новые ресурсы, только обновлять существующие.
$impex_config['include_captions']
true — первая строка файла содержит заголовки колонок.
$impex_config['migx_separators']
$impex_config['migx_separators'] = ['||', '--'];Первый элемент — между элементами MIGX, второй — между полями внутри элемента.
Пример для MIGX с полями image, title, text, link:
['Преимущества', 'benefits', 'migx', ['image', 'title', 'text', 'link']],Строка в файле:
icons/icon01.svg--Низкие цены--Мы держим низкие цены--[[~5]]||icons/icon02.svg--Богатый опыт--У нас большой опыт--[[~6]]$impex_config['batch_import']
Сколько строк обрабатывать за один проход. 0 — без лимита. Уменьшите значение, если сервер не успевает (особенно с галереей miniShop3).
$impex_config['alias_field']
Поле для генерации alias у нового ресурса. Пустая строка — alias только из файла или колонки:
['Псевдоним', 'alias', 'resource'],