Блог Горошко Андрея 1C-Битрикс Отложенные функции в шаблонах: SetViewTarget и ShowViewContent

Отложенные функции в шаблонах: SetViewTarget и ShowViewContent

Частая задача верстальщика: компонент (например, детальная новость) выводится в основной области контента, но какую-то его часть (дату, теги, кнопку «Поделиться») нужно отобразить в другом месте — например, в боковой колонке (сайдбаре) или в шапке сайта.

Для этого в Битрикс существует механизм View Targets (области видимости).

Как это работает?

  1. В шаблоне компонента (или в любом месте страницы) мы заключаем кусок HTML в специальные методы «захвата». Битрикс не выводит этот HTML сразу, а запоминает его под определенным именем.
  2. В шаблоне сайта (header.php или footer.php) мы указываем место, где этот сохраненный HTML нужно вывести.

Шаг 1: Захват контента (SetViewTarget)

Допустим, мы находимся в template.php компонента новости.

// Начало захвата в область с именем 'sidebar_content'
$this->SetViewTarget('sidebar_content'); 
?>
    <div class="news-tags">
        Теги: <?= implode(', ', $arResult['TAGS']) ?>
    </div>
    <a href="#" class="btn-share">Поделиться</a>
<?
// Конец захвата
$this->EndViewTarget(); 
?>

<!-- Основной контент новости выводится как обычно -->
<h1><?= $arResult['NAME'] ?></h1>
<p><?= $arResult['DETAIL_TEXT'] ?></p>

Важно: $this в шаблоне компонента указывает на объект шаблона (CBitrixComponentTemplate), у которого есть эти методы.

Шаг 2: Вывод контента (ShowViewContent)

Теперь откроем footer.php (или header.php), где у нас сверстан сайдбар.

<aside class="sidebar">
    <h3>Информация</h3>
    
    <? 
    // Выводим все, что попало в 'sidebar_content'
    $APPLICATION->ShowViewContent('sidebar_content'); 
    ?>
    
</aside>

Как это работает технически?

Это механизм отложенных функций. Битрикс сначала собирает всю страницу, выполняет все компоненты, и только в самом конце (в эпилоге) заменяет вызовы ShowViewContent на тот контент, который был собран через SetViewTarget.

Именно поэтому вы можете определить контент в теле страницы, а вывести его в шапке (header.php), которая физически находится выше по коду.

Вывод:
SetViewTarget и ShowViewContent — незаменимые инструменты для сложной верстки.

Они позволяют разрывать линейную структуру HTML и «телепортировать» куски кода из компонентов в любые места макета сайта.


 SetViewTarget, ShowViewContent, отложенные функции Битрикс, буферизация, перемещение контента, шаблон компонента, sidebar.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Верстка кастомного видеоплеера с субтитрами и оглавлениемВерстка кастомного видеоплеера с субтитрами и оглавлением

Качественная frontend-разработка и профессиональная натяжка макетов на 1С-Битрикс являются фундаментальным фактором конверсии сайта и его позиций в поисковых системах. Услуга «Верстка кастомного видеоплеера с субтитрами и оглавлением» гарантирует адаптивный плеер

Удалить свойство корзины sale.basketproperties.deleteУдалить свойство корзины sale.basketproperties.delete

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Удалить свойство корзины sale.basketproperties.delete», проанализируем лучшие практики и

Настройка мониторинга истечения сроков SSL-сертификатов и лицензий 1С-БитриксНастройка мониторинга истечения сроков SSL-сертификатов и лицензий 1С-Битрикс

Высокая скорость загрузки сайта и безупречная серверная безопасность — обязательные требования для успешного коммерческого проекта на 1С-Битрикс. Услуга «Настройка мониторинга истечения сроков SSL-сертификатов и лицензий 1С-Битрикс» обеспечивает автоматические уведомления ответственным