Плюшка CMS#29.08.2018

/* Создан для быстрой разработки приложений */
Скачать Демо

11. События (хуки)

19.10.2015

Обработчики событий позволяют заставить систему реагировать на те или иные события.

Обработка происходит по следующему сценарию:

- Инициализация того или иного события начинается с вызова процедуры core::hook(имя_события,[аргумент1, аргумент2...]);

Количество аргументов сугубо индивидуально для каждого типа события.

- Сканируется директорий /hook (или /admin/hook для админки), из которого последовательно подключаются все файлы, имя которых начинается с "имя_события.".

- Функция core::hook() возвращает false, если один из обработчиков событий (скрипты в директории /hook) вернул false, или же массив, каждый элемент которого содержит возвращаемое обработчиком значение.

Если один из обработчиков возвращает false, то все другие обработчики не будут вызваны и core::hook() вернёт false. Если же обработчик вернёт null, то это значение не будет включено в массив, возвращаемый core::hook().

Возвращаемое функцией core::hook() значение может быть использовано, например, при удалении пункта меню для того, чтобы соответствующие модули могли удалить не используемые более данные. Если по каким-то причинам пункт меню удалить нельзя, то соответствующий обработчик события возвращает false и пункт меню удалён не будет.

Поиск по сайту реализован таким образом, что каждый модуль может в результаты поиска добавлять свои данные, для этого он должен реагировать на событие search. Процедура «search» получает один параметр — фраза, по который выполняется поиск. Эта процедура всегда должна возвращать true или null . В самой процедуре результаты должны выводиться оператором echo, а каждый из элементов должен быть «обёрнут» в тег <li>.

Пример реализации можно увидеть, например, в файле /hook/search.article.php.

При необходимости как в общедоступной части сайта, так и в админке можно добавлять свои обработчики событий, добавляя вызов core::hook().