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

События MODX ​

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

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

occurredAt — дата и время в формате ISO 8601. fieldType и status приходят строками (price, applied и т.д.).

Пример: после 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: для виртуальных колонок. Без плагинов экспорт работает как раньше.

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

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

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') + право на маршрут.

Основные действия: 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Сохранённые пресеты
msbe_user_statesСостояние интерфейса менеджера (колонки, экспертный режим)

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