
Impex / Impex3
Импорт и экспорт ресурсов MODX Revolution / MODX 3 и товаров miniShop2 / miniShop3

При установке пакета создаются системные события. Подключите плагин и обработайте нужные case в switch ($modx->event->name).
Перед экспортом поля ресурса.
Переменные:
$config_name — имя файла конфигурации
$id — ID ресурса
$field — имя поля
$type — тип поля
$value — значениеПример: добавить ID к заголовку при экспорте.
<?php
switch ($modx->event->name) {
case 'OnImpexBeforeResourceExport':
if ($field == 'pagetitle') {
$value = $value . '-' . $id;
}
$modx->event->returnedValues['value'] = $value;
break;
}Перед импортом ресурса.
Переменные:
$config_name — имя файла конфигурации
$config — массив полей из конфигурации
$data — массив данных ресурса из файлаПример: добавить TV, которого нет в конфиге и файле.
<?php
switch ($modx->event->name) {
case 'OnImpexBeforeResourceImport':
if ($data[1] == 'Продукт1') {
$config[] = ['Вес без упаковки', 3, 'tv'];
$data[] = '125';
}
$modx->event->returnedValues['output'] = [
'config' => $config,
'data' => $data,
];
break;
}Перед определением родительской категории.
Переменные:
$config_name — имя файла конфигурации
$category — строка категорий из файла
$category_id_field — значение category_id_field из конфигаПлагин возвращает цепочку категорий через ||:
<?php
switch ($modx->event->name) {
case 'OnImpexBeforeSetParentProduct':
if ($category_id_field != '') {
$categories = 'Категория1||Категория2||Категория3';
$modx->event->returnedValues['categories'] = $categories;
}
break;
}Перед импортом одного поля. Те же переменные, что при экспорте: $config_name, $id, $field, $type, $value.
После импорта ресурса.
Переменные:
$config_name — имя файла конфигурации
$id — ID импортированного ресурса
$data — поля и значения из файлаПример: задать alias по ID.
<?php
switch ($modx->event->name) {
case 'OnImpexAfterResourceImport':
if ($resource = $modx->getObject('modResource', $id)) {
$resource->set('alias', 'resource-' . $id);
$resource->save();
}
break;
}После импорта всех ресурсов (опечатка в имени события сохранена в коде пакета).
Переменные:
$config_name — имя файла конфигурации
$ids — массив ID импортированных ресурсовПример: опубликовать все импортированные ресурсы.
<?php
switch ($modx->event->name) {
case 'OnImpexAterAllImport':
foreach ($ids as $id) {
if ($resource = $modx->getObject('modResource', $id)) {
$resource->set('published', 1);
$resource->save();
}
}
break;
}