Битрикс отложенные функции SetPageProperty и ShowProperty

Очень полезный инструмент, который не так очевиден начинающим разработчикам – отложенные функции Битрикса.

Что такое отложенные функции Битрикса и как их применять

Давайте разберем на простом примере, в какой последовательности идет сбор итогового 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. Применяется очень редко, поэтому решайте сами нужен ли он вам 🙂

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

2 коментаря

  1. Пытаюсь поставить noindex для страниц пагинации. Ставлю в header этот код:

    SetPageProperty(“robots”, “noindex, nofollow”);
    };
    ?>

    Но ничего не происходит. В чем может быть загвоздка?

    1. если у вас при сбросе кеша данная ошибка пропадает, то причина в кешировании компонента, и код установки нужно вынести в компонент эпилог.
      если же установка свойства не проставляется даже при ?clear_cache=Y – то нужно переписывать механизм установки данного свойства

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *