Запуск плагина на событие OnBeforeDocFormSave только при ручном сохранении ресурса

Добрый день!

Сделал плагин на событие OnBeforeDocFormSave, на нем генериться текст для Localizator при сохранении, документа, что бы, каждый раз не тыкать Автоматический перевод. Но, когда, например, запускаю что-то на выполнение из Console (например перегенерация превьюшек в каталоге на Minishop2), то событие срабатывает.

Подскажите, в какую сторону копать, что бы его вызывать только при ручном сохранении/обновлении ресурса, а при обработке через Console игнорировать?

Например, в Битрикс, есть, такой метод
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate",  "dropName");
function dropName(&$arFields)
{	
    if (@$_REQUEST['mode']=='import')
    {
		// тут что-то делаем
	}
}
Начало плагина в MODX такое
if (($resource->content_type == '1') && ($resource->id)) {
	//работаем
}
$resource->id здесь для проверки, что ресурс существует, таким образом получилось решить проблему для ImportX…

Заранее благодарен.
Вадим Раевский
24 июня 2020, 17:33
modx.pro
650
0

Комментарии: 4

SEQUEL.ONE
25 июня 2020, 00:57
0
А ты уверен что тебе нужно событие имено с Before? =)
    Вадим Раевский
    25 июня 2020, 02:34
    0
    Ну если ничего не путаю, то «перед сохранением ресурса произвести его перевод, а потом сохранить»… Я ошибаюсь?
      SEQUEL.ONE
      25 июня 2020, 02:41
      0
      Тоесть после сохранения перевести нельзя или вообще использовать событие на пререндер страницы например? В Localizator всё храниться в MIGX и по факту представляет поле с JSON. Я к тому, что можно переписывать это поле при использовании любого триггера (события).
    Алексей Ерохин
    25 июня 2020, 08:17
    0
    Вызов события всегда один и тот же (кроме флага создания), так что разделить не получится.

    Проверяйте, что изменилось поле, которое вы переводите.
    //новые данные 
    $data = $resource->get('pagetitle');
    //старые данные
    $olddata = $resource->getProperty('pagetitle','data');
    if ($data != $olddata) {
    //работаете с локализатором
    $resource->setProperty('pagetitle',$data,'data');//запоминаем новые данные
    $resource->save();
    }
    примерно так
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4