Автор статьи: Вячеслав Дудоров Сооснователь Off GroupДиректор по производству Когда нужно просто вывести информацию из свойства страницы, например: путь к фоновой картинке, мета-тэги и т.д., можно использовать механизм отложенных функций. Но что делать, если нам нужно не просто вывести контент, но как-то его обработать, получить значение в переменную? Недавно при разработке проекта на 1С-Битрикс нам потребовалось использовать свойство страницы в хедере (header.php). В случае, когда нужно просто вывести информацию из свойства, например: путь к фоновой картинке, мета-тэги и т.д., можно использовать механизм отложенных функций, про них есть исчерпывающая информация как в официальной документации, так и на различных форумах и блогах. Но что делать, если нам нужно не просто вывести контент, но как-то его обработать, получить значение в переменную? Если необходимо получить значение свойства в переменную и как-то с ним работать, а не просто отобразить в нужном месте, то стоит вспомнить как именно работает Битрикс. Порядок формирования страницы следующий: Хедер (header.php) Рабочая область (тело страницы) Футер (footer.php) При более детальном рассмотрении, тоже самое можно расписать в 5 пунктов: Служебная часть пролога Визуальная часть пролога Тело страницы Визуальная часть эпилога Служебная часть эпилога И для решения нашей задачи, важно это осознать и использовать. Свойство страницы в Битрикс устанавливается прямо на странице c помощью конструкции CMain::SetPageProperty(), если вы попробуете вызвать метод до стандартного для Битрикс подключения хедера, то ничего не получится. Тут нам на помощь и приходит осознание того, что в классическом подключении хедера на самом деле подключается две части пролога. Файл header.php активного шаблона подключается в визуальной части пролога, а все необходимые переменные, сессия, подключение к БД и т.п., все это подключается и инициализируется в служебной части. Таким образом, мы можем вместо конструкции типа: require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); Использовать: require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php"); Такая запись позволит нам сделать какие-то действия на странице, до отображения визуальной части (до запуска header.php активного шаблона сайта), например установка свойств страницы. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); $APPLICATION->SetPageProperty("background", "gallery.jpg"); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php"); Используя подобную запись можно обращаться к свойствам страницы из header.php напрямую, а не только с помощью отложенных функций.