Как получить свойство страницы в header. Битрикс.
Время прочтения:
3 минуты
Когда нужно просто вывести информацию из свойства страницы, например: путь к фоновой картинке, мета-тэги и т.д., можно использовать механизм отложенных функций. Но что делать, если нам нужно не просто вывести контент, но как-то его обработать, получить значение в переменную?
Недавно при разработке проекта на 1С-Битрикс нам потребовалось использовать свойство страницы в хедере (header.php). В случае, когда нужно просто вывести информацию из свойства, например: путь к фоновой картинке, мета-тэги и т.д., можно использовать механизм отложенных функций, про них есть исчерпывающая информация как в официальной документации, так и на различных форумах и блогах. Но что делать, если нам нужно не просто вывести контент, но как-то его обработать, получить значение в переменную?
Если необходимо получить значение свойства в переменную и как-то с ним работать, а не просто отобразить в нужном месте, то стоит вспомнить как именно работает Битрикс. Порядок формирования страницы следующий:
Недавно при разработке проекта на 1С-Битрикс нам потребовалось использовать свойство страницы в хедере (header.php). В случае, когда нужно просто вывести информацию из свойства, например: путь к фоновой картинке, мета-тэги и т.д., можно использовать механизм отложенных функций, про них есть исчерпывающая информация как в официальной документации, так и на различных форумах и блогах. Но что делать, если нам нужно не просто вывести контент, но как-то его обработать, получить значение в переменную?
Если необходимо получить значение свойства в переменную и как-то с ним работать, а не просто отобразить в нужном месте, то стоит вспомнить как именно работает Битрикс. Порядок формирования страницы следующий:
- Хедер (header.php)
- Рабочая область (тело страницы)
- Футер (footer.php)
- Служебная часть пролога
- Визуальная часть пролога
- Тело страницы
- Визуальная часть эпилога
- Служебная часть эпилога
Свойство страницы в Битрикс устанавливается прямо на странице 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 напрямую, а не только с помощью отложенных функций.