Bitrix

Отложенные функции и работа с $APPLICATION->AddBufferContent()

В этой небольшой статье остановлюсь на одном моменте использования отложенных функций для вывода контента в шаблоне сайта в зависимости от свойства раздела. При грамотном использовании стандартных функций главного модуля Битрикс можно полностью избавить себя от применения условий вывода контента, которые обращаются к суперглобальному массиву $_SERVER.

Постановка задачи:

Нужно вывести баннер в header.php шаблона сайта на одних страницах сайта, а на других страницах не выводить. При этом предположим, что в карточках товаров нужно выводить данный баннер, а в разделах каталога — нет.

Решение стандартное:

Обычно стараются решить при помощи условий, которые содержат инструкции в $_SERVER, причем в случае работы с карточками товаров, разделами товаров, эти инструкции могут принять монструозные и неадекватные формы, которые затем при ошибках может быть сложно отлаживать.

Решение с использованием $APPLICATION->AddBufferContent():

  1. Задаем в разделах, где нужно выводить баннер свойство раздела (например, SHOW_BANNER) и присваиваем ему значение «Y».
  2. Для карточки товара, если используется комплексный компонент, то задаем свойство раздела следующим образом в element.php комплексного шаблона: $APPLICATION->SetDirProperty(«SHOW_BANNER», «Y»);
  3. В header.php шаблона сайта пишем такой код:

$APPLICATION->AddBufferContent(‘ShowBanner’);
function ShowBanner()
{
global $APPLICATION;
if ($APPLICATION->GetDirProperty(«SHOW_BANNER») != «Y»)
{
return ‘вывод тега IMG’;
}
}

А поскольку в свойствах можно передавать и адрес картинки, то через отложенную функцию можно вывести баннер, который будет относиться непосредственно к нужной карточке товара.

Отставить комментарий

Ваш электронный адрес не будет опубликован.Обязательные для заполнения поля отмечены *

девятнадцать + десять =