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 Подключение
/bitrix/php_interface/dbconn.php
  Подключаемый файл должен содержать определения переменных для соединения с базой данных, констант для отладки и прав доступа.
1.2 Соединение с базой данных $DB В случае ошибки соединения будет подключен файл /bitrix/php_interface/dbconn_error.php.
1.3 Подключение
/bitrix/php_interface/after_connect.php
  Подключаемый файл может содержать операции, необходимые для выполнения сразу после соединения с БД.
1.4 Определение текущего сайта $APPLICATION, SITE_ID, SITE_DIR, SITE_SERVER_NAME, SITE_CHARSET, FORMAT_DATE, FORMAT_DATETIME, LANGUAGE_ID,
Определяются все классы и функции Главного модуля.
Если к этому моменту определена константа с кодом сайта SITE_ID , то сайт не будет определяться по текущей папке и доменному имени, а все остальные константы будут определены для этого сайта.
1.5 Подключение
/bitrix/php_interface/init.php
  Может содержать в себе инициализацию обработчиков событий, подключение дополнительных функций - общие для всех сайтов.
1.6 Подключение
/bitrix/php_interface/ID сайта/init.php
  Содержит параметры, определения функций для конкретного сайта.
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 Подключение
/bitrix/templates/ID шаблона сайта/header.php
   
3. Тело страницы
4. Визуальная часть эпилога (/bitrix/modules/main/include/epilog_before.php)
4.1 Подключение
/bitrix/templates/ID шаблона сайта/footer.php
   
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 больше недоступна