Запуск плагина на событие OnBeforeDocFormSave только при ручном сохранении ресурса
Добрый день!
Сделал плагин на событие OnBeforeDocFormSave, на нем генериться текст для Localizator при сохранении, документа, что бы, каждый раз не тыкать Автоматический перевод. Но, когда, например, запускаю что-то на выполнение из Console (например перегенерация превьюшек в каталоге на Minishop2), то событие срабатывает.
Подскажите, в какую сторону копать, что бы его вызывать только при ручном сохранении/обновлении ресурса, а при обработке через Console игнорировать?
Например, в Битрикс, есть, такой метод
Заранее благодарен.
Сделал плагин на событие 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…Заранее благодарен.
Комментарии: 4
А ты уверен что тебе нужно событие имено с Before? =)
Ну если ничего не путаю, то «перед сохранением ресурса произвести его перевод, а потом сохранить»… Я ошибаюсь?
Тоесть после сохранения перевести нельзя или вообще использовать событие на пререндер страницы например? В Localizator всё храниться в MIGX и по факту представляет поле с JSON. Я к тому, что можно переписывать это поле при использовании любого триггера (события).
Вызов события всегда один и тот же (кроме флага создания), так что разделить не получится.
Проверяйте, что изменилось поле, которое вы переводите.
Проверяйте, что изменилось поле, которое вы переводите.
//новые данные
$data = $resource->get('pagetitle');
//старые данные
$olddata = $resource->getProperty('pagetitle','data');
if ($data != $olddata) {
//работаете с локализатором
$resource->setProperty('pagetitle',$data,'data');//запоминаем новые данные
$resource->save();
}
примерно так
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.