Рейтинг: 0.7739  
Новая
Предложил Пользователь 129131 24.04.2015 15:02:38

...

...
Рейтинг: 8.4833  
На голосовании
Предложил Пользователь 16182 13.02.2014 22:22:31

Подключение дополнительных init.php файлов из папки

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

Например, в мастере бывает нужно добавить какой-то обработчик или функцию в init.php на уже существующий чужой рабочий сайт, но если данный файл уже существует - то переписать мы его не можем, а дописывать в конец - как-то неправильно, и лучше подключать данные файлы как доп. библиотеки.
Рейтинг: 39.7713  
Новая
Предложил Пользователь 14686 16.05.2012 13:00:56

Добавить обработчики событий подключения файла init.php

Необходимо добавить два обработчика событий:
OnBeforeIncludeInitPHP
OnAfterIncludeInitPHP
Они должны вызываться для всех существующих init.php: общего и сайто-зависимых.

Зачем это необходимо
добавление кода в init.php может преследовать две цели:

1. Добиться подключения кода на каждом хите т.е. расширение его области видимости. С последующим вызовом из произвольного места на сайте. Т.е. подключение кода и его вызов разнесены во времени исполнения страницы.

2.  Добиться подключения кода и его работы непосредственно сразу после подключения.

В обоих случаях код добавляют руками. Если необходимо раздавать код,  который работает по принципу 2 (подключили и тут же запустили) через маркетплейс, то это становится трудоёмкой задачей. Нужно писать инструкцию.

Пример такого кода -  класс для логирования. Он обслуживает код, который уже исполняется в init.php, а обработчики событий ещё не начали работу. Посмотрите на порядок выполнения страницы.

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

Добавлять строчку в шапку init.php с вызовом CModule::IncludeModule('MyModule');
Руками разработчика или скриптом считаю не очень хорошей идеей.