Skip to content
msBulkEditor
Массовое редактирование товаров MiniShop3 в менеджере MODX 3
  1. Компоненты
  2. msBulkEditor
  3. Для разработчика

События MODX

При apply msBulkEditor вызывает системные события. Регистрируйте их в плагине.

СобытиеКогдаПолезные свойства
msbeOnBulkOperationStartedСтарт applyoperationId, …
msbeOnBulkOperationCompletedУспешное завершениеoperationId, success, skipped, error
msbeOnBulkOperationFailedИсключение при applyoperationId, сообщение ошибки
msbeOnFieldAppliedПосле успешного apply поляoperationId, productId, field, oldValue, newValue, status
msbeOnExportColumnsПеред записью заголовка экспортаcolumns, format, selection
msbeOnExportBuildRowПеред записью каждой строкиproductId, row, columns, format, selection

Пример: после msbeOnBulkOperationCompleted сбросить кэш Fenom или отправить уведомление.

Расширение экспорта плагином

Плагин может добавить колонку и заполнить её для каждой строки. Верните обновлённые columns / row через $modx->event->returnedValues.

php
<?php
/** @var modX $modx */
switch ($modx->event->name) {
    case 'msbeOnExportColumns':
        $columns = $modx->event->params['columns'] ?? [];
        if (!is_array($columns)) {
            $columns = [];
        }
        $columns[] = 'plugin:warehouse_code';
        $modx->event->returnedValues = ['columns' => array_values(array_unique($columns))];
        break;

    case 'msbeOnExportBuildRow':
        $row = $modx->event->params['row'] ?? [];
        if (!is_array($row)) {
            $row = [];
        }
        $productId = (int) ($modx->event->params['productId'] ?? 0);
        $row['plugin:warehouse_code'] = 'WH-' . $productId;
        $modx->event->returnedValues = ['row' => $row];
        break;
}

Ключи колонок должны совпадать с каталогом полей (tv:name, option:key, msbe:option:key) или использовать префикс plugin: для виртуальных колонок. Без плагинов экспорт работает как раньше.

Реакция на изменение одного поля

После apply для каждой позиции со статусом applied вызывается msbeOnFieldApplied. Событие срабатывает и для inline-edit (один товар), и для массовых операций.

php
<?php
/** @var modX $modx */
if ($modx->event->name !== 'msbeOnFieldApplied') {
    return;
}

$productId = (int) ($modx->event->params['productId'] ?? 0);
$field = (string) ($modx->event->params['field'] ?? '');

if ($field === 'pagetitle' && $productId > 0) {
    $modx->cacheManager->refreshResource($productId);
}

Connector

Базовый URL: {site}/assets/components/msbulkeditor/connector.php.

Аутентификация: сессия менеджера (mgr) + заголовок HTTP_MODAUTH = user->getUserToken('mgr') + право на route.

Основные actions: mgr/products/list, preview, apply, rollback, mgr/history/*, mgr/export/run, mgr/import/parse, mgr/import/run, mgr/bindings/check, mgr/bindings/apply.

Формат ответа:

json
{
  "success": true,
  "message": "",
  "object": { }
}

Ошибки: "success": false, "message": "msbulkeditor_*" — ключ лексикона.

Токен modAuth берите из открытой страницы msBulkEditor (window.msBulkEditorConfig.modAuth). Не храните токен в публичных скриптах.

База данных

ТаблицаНазначение
msbe_operationsЗаголовок операции (тип, статус, счётчики)
msbe_operation_itemsСнимки по товарам для отката
msbe_presetsСохранённые пресеты

См. также: Системные настройки, История.