Расширить функциональность init.php

Рейтинг: -26.4156  
На голосовании
Предложил Пользователь 77078 11.10.2011 23:48:33

Расширить функциональность init.php

Сейчас для обработки событий используется файл bitrix/php_interface/init.php если не ошибаюсь еще можно подключать init.php для разных сайтов bitrix/php_interface/co/init.php где co - ид сайта

При разработке своего модуля и его установке бывает необходимость повесить обработчик на какое то событие. Для этого нужно добавить код в init.php или инклюдить файл из своего модуля, что не очень удобно. При удалении модуля также придется чистить init.php

Для решения данной проблемы предлогаю сделать так.
Добавить папку init
bitrix/php_interface/init
При инсталяции модуля в эту папку копировать файл с инклюдом файла модуля в котором и будут обработчики событий например
bitrix/php_interface/init/my_module_events.php
Аналогично при многосайтовости
bitrix/php_interface/init/co/my_module_events.php

Потом инклюдить содержимое bitrix/php_interface/init/

При деинсталяции модуля удалять файлы.

Рейтинг: 43.8285  
Пользователь 2106 12.10.2011 00:34:36
Для подключения обработчиков событий модулей существует функция RegisterModuleDependences Возможно, ее функционала будет достаточно?
Рейтинг: -7.3865  
Пользователь 69894 12.10.2011 02:46:59
вы можете в init.php инклюдить файл от своего модуля, а при удалении модуля удалять эту строку. А вообще, если ваш модуль требует каких-то правок в init.php, то скорее всего вы что-то делаете не так. На уровне модуля можно реализовать все необходимое, а init.php он как раз используется для реализации функций вне модуля.