Каждое событие инициированное хуком MG::createHook() мы можем перехватить с помощью функции MG::addAction() в файлах плагинов и файле functions.php
Давайте в файле пользовательских функций шаблона functions.php напишем функцию
А следом назначим ее в качестве обработчика хука mg_start иницируемого в файле mg-core/mg-start.php при запуске движка.
Хук mg_start инициирован следующим способом: MG::createHook('mg_start'); и не находится в теле функции, поэтому передаваемых данных для него не существет и назначить обрабочтик можно без указания дополнительных параметров:
Теперь при обновлении страницы сайта мы будем видеть надпись 'Произошло событие mg_start' выведенную в результате работы пользовательской функции startEngine().
Попробуем обработать событие models_order_updateorder созданное в методе updateOrder() класса Models_Order таким образом:
Для обработки хука подобного вида нам потребуется функция принимающая массив исходных данных из метода updateOrder(), а также результат его работы.
При создании пользовательской функции для обработки сложного хука, необходимо помнить несколько важных моментов.
Функция обработчик обязательно должна:
В параметре $arg всегда будет содержаться массив:
Посмотреть, что передается в параметр $arg всегда можно из описанных тут способов.
Подготовив пользовательскую функцию нужно назначить ее в качестве обработчика хука следующим образом:
Внимание!
Названия хуков методов формируются из названия класса и названия метода в нижнем регистре, объединенных через символом нижнего подчеркивания _ : models_order_updateorder, category_addcategory, mg_getbuffer, models_catalog_getlist и т.п.