05.08.2019
Страница и порядок ее выполнения
Я являюсь активным пользователем сервиса toster.ru. Очень часто вопросы пользователей возникают из за не понимания порядка выполнения страницы. В курсах от Битрикс, этот вопрос раскрывается не раз, но самый лучший ответ на него описан в документации для разработчиков. Страница и порядок её выполнения. Ниже приведу копию статьи.
Страница представляет из себя PHP файл, состоящий из пролога, тела страницы (основной рабочей области) и эпилога:
- header (/bitrix/header.php )
- workarea
- footer (/bitrix/footer.php)
Страница имеет определённую структуру, свойства и параметры. Она может использовать свои собственные шаблоны.
Порядок выполнения страницы:
№ | Операция | Определяемые константы и переменные | Примечание |
---|---|---|---|
1. Служебная часть пролога (/bitrix/modules/main/include/prolog_before.php) | |||
1.1 | Подключение
| Подключаемый файл должен содержать определения переменных для соединения с базой данных, констант для отладки и прав доступа. | |
1.2 | Соединение с базой данных | $DB | В случае ошибки соединения будет подключен файл |
1.3 | Подключение
| Подключаемый файл может содержать операции, необходимые для выполнения сразу после соединения с БД. | |
1.4 | Определение текущего сайта | $APPLICATION, SITE_ID, SITE_DIR, SITE_SERVER_NAME, SITE_CHARSET, FORMAT_DATE, FORMAT_DATETIME, LANGUAGE_ID,
Определяются все классы и функции Главного модуля. | Если к этому моменту определена константа с кодом сайта SITE_ID , то сайт не будет определяться по текущей папке и доменному имени, а все остальные константы будут определены для этого сайта. |
1.5 | Подключение
| Может содержать в себе инициализацию обработчиков событий, подключение дополнительных функций - общие для всех сайтов. | |
1.6 | Подключение
| Содержит параметры, определения функций для конкретного сайта. | |
1.7 | Проверка агентов | В агентах нельзя пользоваться переменными $USER, $_SESSION и всех остальных, которые определяются ниже. | |
1.8 | Открытие сессии | Все сессионные переменные $_SESSION | |
1.9 | Событие OnPageStart | ||
1.10 | Определение пользователя, авторизация пользователя, завершение сеанса, регистрация (в зависимости от параметров в запросе) | $USER | |
1.11 | Определение текущего шаблона сайта | SITE_TEMPLATE_ID | |
1.12 | Событие OnBeforeProlog | ||
1.13 | Проверка прав доступа уровня 1 | В случае если прав недостаточно, то выводится форма авторизации и страница завершает выполнение. | |
1.14 | Начало буфферизации вывода | После начала буферизации можно делать вывод, до установки куков и наоборот, устанавливать куки после вывода в поток. | |
1.15 | Событие OnProlog | ||
2. Визуальная часть пролога (/bitrix/modules/main/include/prolog_after.php) | |||
2.1 | Подключение
| ||
3. Тело страницы | |||
4. Визуальная часть эпилога (/bitrix/modules/main/include/epilog_before.php) | |||
4.1 | Подключение
| ||
4.2 | Вызов функции CMain::ShowSpreadCookieHTML | Данная функция выводит набор невидимых IFRAME'ов используемых в Технология переноса посетителей | |
5. Служебная часть эпилога (/bitrix/modules/main/include/epilog_after.php) | |||
5.1 | Событие OnEpilog | ||
5.2 | Завершение буферизации страницы | Завершение и вывод в поток буффера инициализированного в п. 1.14 | |
5.3 | Отправка E-Mail писем | Подробнее о E-Mail письмах можно прочитать в разделе "Почтовая система" | |
5.4 | Событие OnAfterEpilog | ||
5.5 | Завершение соединения с базой данных | Переменная $DB больше недоступна |