Как получить свойство страницы в header. Битрикс.

12.05.2019
1173
Когда нужно просто вывести информацию из свойства страницы, например: путь к фоновой картинке, мета-тэги и т.д., можно использовать механизм отложенных функций. Но что делать, если нам нужно не просто вывести контент, но как-то его обработать, получить значение в переменную?

Недавно при разработке проекта на 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 напрямую, а не только с помощью отложенных функций.

Интересно такое решение?

Заполните форму и мы свяжемся с вами в течение одного рабочего дня, чтобы обсудить ваши задачи. Первичная консультация абсолютно бесплатна.

Вячеслав Дудоров
Сооснователь OFF GROUP
Директор по производству

похожие материалы

Есть вопросы?

Заполните форму и мы свяжемся с вами в теление одного рабочего дня.

Нажимая на кнопку «Отправить», я даю согласие на обработку персональных данных и соглашаюсь c политикой конфиденциальности