Назад

Передача данных из компонента Битрикс в шаблон сайта

Главная
Блог
Передача данных из компонента Битрикс в шаблон сайта

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

В этой статье рассмотрим профессиональный подход к решению подобных задач с использованием встроенного API платформы.

Проблема разделения логики и представления

Типичные сценарии:

  • Динамический футер — отображение специального баннера только в карточках товаров

  • Умные заголовки — изменение <title> на основе данных компонента

  • Контекстные мета-теги — добавление в <head> специфических тегов для отдельных страниц

Основная сложность заключается в том, что логика определения необходимости этих действий находится внутри компонента, а область их применения — в шаблоне сайта (header.php, footer.php).

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

Правильное решение — использование методов $APPLICATION->SetPageProperty() и $APPLICATION->GetPageProperty().

Практическая реализация

Установка свойств в компоненте

Логику передачи данных следует размещать в файле component_epilog.php компонента. Этот файл выполняется после основного шаблона, что делает его идеальным местом для подобных операций. Как передавать данные из result_modifier.php в component_epilog.php смотрите в этой статье.

Базовый пример: установка флага

<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die();
}

// Активируем специальный режим отображения
$APPLICATION->SetPageProperty("SPECIAL_FOOTER_OFFER", "Y");
?>

Расширенный пример: передача данных

<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die();
}

// Формируем динамический заголовок на основе данных компонента
$bannerTitle = "Акция: " . $APPLICATION->GetTitle();
$APPLICATION->SetPageProperty("FOOTER_BANNER_TITLE", $bannerTitle);
?>

Использование свойств в шаблоне

Получить установленные свойства можно в любой части шаблона сайта. Второй параметр метода GetPageProperty() задаёт значение по умолчанию.

Пример использования в footer.php

<?php
$showSpecialOffer = $APPLICATION->GetPageProperty("SPECIAL_FOOTER_OFFER", "N");
$bannerTitle = $APPLICATION->GetPageProperty("FOOTER_BANNER_TITLE", "Специальное предложение");

if ($showSpecialOffer === "Y") {
    ?>
    <section class="special-footer-banner">
        <h3><?= htmlspecialcharsbx($bannerTitle) ?></h3>
        <div class="banner-content">
            <p>Только сегодня скидка 15%!</p>
        </div>
    </section>
    <?php
}
?>

Пример использования в header.php

<?php
$customPageTitle = $APPLICATION->GetPageProperty("CUSTOM_TITLE");
if ($customPageTitle) {
    $APPLICATION->SetTitle(htmlspecialcharsbx($customPageTitle));
}
?>

Преимущества подхода

1. Безопасность и стабильность

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

2. Чистая архитектура

Использование штатного API Битрикс обеспечивает правильное разделение ответственности между компонентами и шаблоном.

3. Удобство сопровождения

Код становится более читаемым и предсказуемым. Легко отслеживать установку и использование свойств через стандартные методы платформы.

4. Гибкость конфигурации

Возможность передачи произвольных данных и их использования в различных частях шаблона обеспечивает необходимую степень свободы при сохранении чёткой структуры.

Заключение

Использование методов SetPageProperty() и GetPageProperty() представляет собой идиоматический способ организации взаимодействия между компонентами и шаблоном в «1С-Битрикс».

Этот подход соответствует лучшим практикам разработки, обеспечивая безопасность, поддерживаемость и масштабируемость ваших решений. Переход от глобальных переменных к использованию API платформы — важный шаг в профессиональном росте битрикс-разработчика.

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи