Отложенные функции [bitrix api]

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

На примере, допустим нам нужно в левую колонку (header.php) выводить список товаров, но по определенному условию, если на странице находится товар с ценой больше 1000 р. или еще по какому-либо критерию. Важно то, что мы не знаем значение по которому можно определить это и оно было-бы нам доступно в header.php, только если это $_GET параметр, но я думаю все цены товара «поднимать» в $_GET это бред.

Вот для передачи значения в header и служат отложенные функции. Заголовок странице устанавливается тоже так, передача значения идет с самой страницы.

С помощью метода $APPLICATION->SetPageProperty(‘KEY’, ‘VALUE’) на самой странице добавляем в ее свойства наше значение, в примере с ценой это будет примерно так:

$APPLICATION->SetPageProperty('MAX_PRICE', $i_ProductPrice);

Далее пишем функцию и ложем ее в init.php например,

function getLeftCatalogList()
{
    global $APPLICATION;
    # вот тут нам будет доступно наше значение,
    # можно делать условие или передавать в компонент и т.д.
    if(isset($APPLICATION->GetProperty('MAX_PRICE')) 
        &&
        intval($APPLICATION->GetProperty('MAX_PRICE')) > 1000)
        {
           ob_start();
           $APPLICATION->IncludeComponent("bitrix:catalog.section", '',
 array());
           $contentTime = ob_get_contents();
           ob_end_clean();
           return $contentTime;
        }
}

Теперь в том месте где нужно выводить этот список (header.php), вызываем функцию

...
...
$APPLICATION->AddBufferContent("getLeftCatalogList");
...
...

Условие сработает, так как значение будет доступно и все будет как надо.

Если нужно что-то вывести в правой колонке т.е. footer.php то достаточно просто указать параметр с помощью
$APPLICATION->SetPageProperty(‘KEY’, ‘VALUE’);
и получить его можно в футере функцией
$APPLICATION->GetPageProperty(‘KEY’, ‘VALUE’)