Блог разработчиков

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

12 Май

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

Веб-студия "Дудорофф" является Сертифицированным партнером компании "1С-Битрикс" и предлагает полный комплекс услуг по разработке сайтов любой сложности. Обладая солидным штатом сотрудников, мы всегда сможем подобрать исполнителя именно под Ваш проект. Мы разрабатываем качественные, уникальные и дорогие проекты.

г.Санкт-Петербург, ул.Бухарестская, д.8