Здравствуйте.
Помогите выяснить про события в МОДХ
например, ели у нас есть событие 'OnSiteTest' и в коде процессора сделать вызов
$this->modx->invokeEvent('OnSiteTest')
то плагин навешенный на это событие сработает?
и второй вопрос есть ли возможность переопределения базовых событий
например (я так понимаю) если 404 то возникает событие которые перенаправляет пользователя на страницу из настроек системы. Возможно ли это изменить?
Спасибо.
если 404 то возникает событие которые перенаправляет пользователя на страницу из настроек системы. Возможно ли это изменить?
Да. Вешаешь плагин на событие 'OnPageNotFound', и если из него делаешь exit(), то остальные обработчики не сработают.
другие в рамках события?
кастомный плагин с приоритетом 0 всегда будет выполнятся раньше других?
Саша, exit() — это слишком жестко :) Это вообще обломит всю работу сайта. Смотри метод MODx::invokeEvent(), там есть обрыв выполнения плагинов. То есть создаешь плагин на это событие, выставляешь очередность более приоритетную и в плагине вызываешь $modx->event->stopPropagation(); Все, далее плагины не будут вызваны.
Там exit() что есть, что нету, так как сам метод $modx->request->prepareResponse() в итоге, доходя до modResponse(), приходит к нему. Но в большинстве других случаев это будет смерть сайту.
*modresponse — не метод, класс.
Спасибо, буду знать.
Не за что.
ели у нас есть событие 'OnSiteTest' и в коде процессора сделать вызов $this->modx->invokeEvent('OnSiteTest') то плагин навешенный на это событие сработает?
Что бы обращаться к событию, необходимо чтобы такое событие было в таблице системных событий modx modx_system_eventnames
т.е.
1. добовляем событие
$e = $modx->newObject('modEvent'); $e->set('name', 'OnSiteTest'); $e->set('service',1); $e->set('groupname', 'custom'); $e->save();
2. Вешаем на него какойнить плагин
3. Теперь можно дергать этот плагин через вызов события OnSiteTest
$this->modx->invokeEvent('OnSiteTest')