Очень полезный инструмент, который не так очевиден начинающим разработчикам — отложенные функции Битрикса.
Что такое отложенные функции Битрикса и как их применять
Давайте разберем на простом примере, в какой последовательности идет сбор итогового HTML:
1. подключается «ядро» системы, и загружаются различные классы, методы, константы и т.д.
2. HTML записывается в буфер, и пока что никуда не выводится
3. При помощи инструмента отложенных функций, мы отмечаем место в HTML, в которое потому будет записано последнее установленное значение, например:
... <title>##MY_TITLE##</title> </head> ...
шаг 3, это как раз и есть ShowProperty, если вы знакомы с Битриксом, то вы наверняка писали в коде:
<title><?$APPLICATION->ShowTitle();?></title>
ShowTitle() это такая же самая отложенная функция, как и ShowProperty. На этом шаге мы задали «метку».
4. в коде компонента, или на странице, вы задаете значение для вашей «метки» при помощи SetPageProperty.
С теорией разобрались, теперь перейдем к практическому примеру:
Задача. Необходимо добавить в body динамический класс, который будет задаваться либо в коде страницы, либо в компоненте (помните, в компоненте, у которого используется кеш, задавать можно только в component_epilog.php, иначе, с включенным кешем будет ошибка).
Решаем задачу. В body пишем такой код (знак «=» или echo ставить не нужно):
<body class="<?$APPLICATION->ShowProperty('CLASS')?>">
Поставили метку, идем дальше. В коде задаем SetPageProperty (вы могли применять эту функцию для title, description, keywords):
<?$APPLICATION->SetPageProperty("CLASS", "main");?>
$APPLICATION->GetProperty(‘CLASS’) — применяется гораздо реже, и не вернет вам ничего, если SetPageProperty будет установлен ниже вызова GetProperty. Применяется очень редко, поэтому решайте сами нужен ли он вам 🙂