Как работают отложенные функции в Битрикс
11 Декабря 2014

Как работают отложенные функции в Битрикс

Рассмотрим работу отложенных функций в Битрикс на примере переноса компонента из одного места шаблона в другое.

Описанный ниже метод основан на технологии буферизации. Буферизация позволяет нам манипулировать данными, которые формируют нам php скрипты на странице (например, HTML код). Проще говоря, происходит следующее: перед тем как сервер отдаст нам сформированный html код по нашему запросу, мы с помощью определённых методов можем изменить расположение этого кода заданным образом, переместив его выше или ниже места вывода.

Как и где это применять?

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

Приведу распространенный пример использования.

Комплексный компонент битрикс каталог bitrix:catalog выводит умный фильтр над списком товаров. Многим хочется изменить такой дизайн переместив умный фильтр в привычное пользователю левое меню (к примеру). При этом компонент фильтра должен сохранить свою логику работы.

Делаем это следующим образом:

заключаем компонент умного фильтра в

<?$this->SetViewTarget("left_sidebar");?>

код компонента

<?$this->EndViewTarget();?>

а в нужном месте вывода шаблона - это может быть как выше, так и ниже места вывода фильтра, вставляем:

<div class="left sidebar">
      <?$APPLICATION->ShowViewContent("left_sidebar");?>   // здесь будет выведен код умного фильтра
</div>

Это один из примеров использования, по аналогии можно поступить с любым компонентом или фрагментом кода.

Комментарии

Использую в своей работе