Основные функции вывода в шаблонах 1С-Битрикс
При разработке сайта на 1С-Битрикс часто нужны одни и те же функции: вывести заголовок страницы, подключить мета-теги, показать панель администратора, получить путь к шаблону, вывести данные из компонента, картинку, меню, остаток товара или включаемую область. Ниже — практичная шпаргалка для работы с шаблонами.
Зачем знать эти функции
Шаблон сайта в 1С-Битрикс отвечает за внешний вид страниц, подключение стилей и скриптов, вывод мета-данных, меню, контента и служебных элементов.
В разработке постоянно используются системные переменные и методы объекта $APPLICATION. Они помогают корректно вывести заголовки, подключить служебные файлы, показать административную панель и вставить компоненты.
Отдельно в шаблонах компонентов используются массивы $arResult, $arItem, $arSection и другие данные, которые компонент передаёт в шаблон. Через них выводятся названия, тексты, изображения, ссылки, даты, свойства и другая информация.
Эта статья — компактная шпаргалка по основным функциям вывода, которые чаще всего нужны при вёрстке и доработке сайтов на 1С-Битрикс.
Главный вывод
Если вы разрабатываете шаблон Битрикса, важно понимать разницу между основным шаблоном сайта и шаблоном компонента: в них используются разные переменные и разные задачи вывода.
Основные функции в шаблоне сайта
Эти функции обычно используются в файлах основного шаблона сайта: header.php, footer.php и других частях шаблона.
| Функция или переменная | Что делает | Где обычно используется |
|---|---|---|
$APPLICATION->ShowTitle(); |
Выводит title страницы. | Внутри тега <title> в основном шаблоне. |
$APPLICATION->ShowHead(); |
Выводит служебные данные внутри <head>: мета-теги, стили, скрипты и другие подключения. |
В блоке <head>. |
$APPLICATION->ShowPanel(); |
Выводит административную панель Битрикса. | Сразу после открывающего тега <body>. |
SITE_TEMPLATE_PATH |
Возвращает путь к текущему шаблону сайта. | Для подключения изображений, CSS, JS и других файлов шаблона. |
$APPLICATION->ShowTitle(false); |
Выводит заголовок страницы без дополнительных HTML-обёрток. | Например, внутри <h1>. |
$APPLICATION->ShowMeta("keywords"); |
Выводит содержимое мета-тега keywords. | Внутри <head>, если мета-теги выводятся вручную. |
$APPLICATION->ShowMeta("description"); |
Выводит содержимое мета-тега description. | Внутри <head>. |
$APPLICATION->ShowCSS(); |
Подключает основные CSS-файлы, включая template_styles.css и styles.css. |
В <head>, если используется раздельный вывод служебных частей. |
$APPLICATION->ShowHeadStrings(); |
Выводит специальные строки в <head>, например дополнительные стили или JavaScript-вставки. |
В <head>. |
$APPLICATION->ShowHeadScripts(); |
Выводит служебные скрипты Битрикса. | В <head> или в месте, предусмотренном шаблоном. |
Пример базовой структуры header.php
В простом шаблоне сайта часто используется такая структура:
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title><?php $APPLICATION->ShowTitle(); ?></title>
<?php $APPLICATION->ShowHead(); ?>
</head>
<body>
<?php $APPLICATION->ShowPanel(); ?>
<header class="site-header">
<a href="/" class="logo">
<img src="<?= SITE_TEMPLATE_PATH ?>/images/logo.svg" alt="Логотип">
</a>
</header>
<main>
<h1><?php $APPLICATION->ShowTitle(false); ?></h1>
Важно
Не забывайте вызывать ShowHead() и ShowPanel(). Без них могут некорректно работать административная панель, стили, скрипты и служебные возможности Битрикса.
Основные переменные в шаблонах компонентов
В шаблонах компонентов данные чаще всего приходят в массивах $arResult, $arItem, $arSection. Например, в списке новостей или каталоге элементы обычно перебираются через foreach.
| Код | Что выводит |
|---|---|
echo $arSection["DESCRIPTION"]; |
Описание раздела инфоблока. |
echo $arItem["NAME"]; |
Название элемента. |
echo $arItem["DETAIL_PAGE_URL"]; |
Ссылку на детальную страницу новости, статьи, товара или другого элемента. |
echo $arItem["PREVIEW_TEXT"]; |
Текст анонса. |
echo $arResult["DETAIL_TEXT"]; |
Детальный текст элемента. |
echo $arItem["PREVIEW_PICTURE"]["SRC"]; |
Путь к изображению анонса. |
echo $arItem["DETAIL_PICTURE"]["SRC"]; |
Путь к детальному изображению. |
echo $arResult["DISPLAY_ACTIVE_FROM"]; |
Дату начала активности в подготовленном для отображения виде. |
echo $arItem["DATE_CREATE"]; |
Дату создания элемента инфоблока. |
Рекомендация: экранируйте данные при выводе
В примерах часто используют простой echo, но в реальных шаблонах важно учитывать безопасность вывода.
Если вы выводите текст, название, alt, title или данные пользователя, лучше экранировать HTML-символы:
<?= htmlspecialcharsbx($arItem["NAME"]) ?>
Если поле содержит разрешённый HTML, например детальное описание из визуального редактора, его можно выводить как HTML, но только если вы понимаете источник данных и доверяете ему.
Не забывайте
Неэкранированный вывод пользовательских данных может привести к XSS-уязвимостям. Особенно это важно для форм, комментариев и личных кабинетов.
Как вывести картинку и подставить заглушку, если её нет
Частая задача в шаблоне компонента — проверить, есть ли картинка у элемента. Если картинки нет, можно подставить статичную заглушку.
<?php if (!empty($arItem["DETAIL_PICTURE"]["SRC"])): ?>
<img src="<?= $arItem["DETAIL_PICTURE"]["SRC"] ?>" alt="<?= htmlspecialcharsbx($arItem["NAME"]) ?>">
<?php else: ?>
<img src="<?= SITE_TEMPLATE_PATH ?>/images/empty.jpg" alt="Нет изображения">
<?php endif; ?>
Для изображений лучше всегда заполнять alt. Это полезно для доступности, SEO и аккуратной вёрстки.
Включаемая область в режиме PHP
Включаемые области удобно использовать для блоков, которые нужно редактировать отдельно: баннеры, контакты, промо-блоки, уведомления, сквозные элементы сайта.
<?php
$APPLICATION->IncludeFile(
SITE_DIR . "include/flash.php",
Array(),
Array("MODE" => "php")
);
?>
Важно
Режим php позволяет выполнять PHP-код внутри подключаемого файла. Используйте его только там, где это действительно нужно.
Как вывести количество товара на складе
В списке товаров можно получить данные торгового каталога по ID элемента:
<?php
$ar_res = CCatalogProduct::GetByID($arElement["ID"]);
echo "На складе: ";
print_r($ar_res["QUANTITY"]);
echo " шт.";
?>
В подробной карточке товара можно заменить числовой остаток на понятное выражение:
<?php
$quantity = $arResult["CATALOG_QUANTITY"];
if (!$quantity) {
echo "нет";
} elseif ($quantity > 0 && $quantity <= 10) {
echo "мало";
} elseif ($quantity > 10 && $quantity <= 100) {
echo "достаточно";
} elseif ($quantity > 100) {
echo "много";
}
?>
Рекомендация
В современных проектах лучше заранее проверять, какие данные уже есть в $arResult, чтобы не делать лишние запросы к базе внутри шаблона.
Как вывести название раздела внутри элемента
Например, в детальной новости можно указать, к какому разделу она относится:
<?= htmlspecialcharsbx($arResult["SECTION"]["PATH"][0]["NAME"]) ?>
Перед выводом сложных массивов удобно временно посмотреть структуру через print_r($arResult), но не оставляйте отладку на боевом сайте.
Как вывести меню нужного типа в шаблоне
Меню в Битриксе обычно выводится через компонент bitrix:menu. Например, меню типа top с шаблоном top_menu:
<?php
$APPLICATION->IncludeComponent(
"bitrix:menu",
"top_menu",
array(
"ROOT_MENU_TYPE" => "top",
"MENU_CACHE_TYPE" => "A",
"MENU_CACHE_TIME" => "3600",
"MENU_CACHE_USE_GROUPS" => "Y",
"MENU_CACHE_GET_VARS" => array(),
"MAX_LEVEL" => "1",
"CHILD_MENU_TYPE" => "left",
"USE_EXT" => "N",
"DELAY" => "N",
"ALLOW_MULTI_SELECT" => "N"
),
false
);
?>
Как подключить веб-мессенджер в шаблоне сайта
Для подключения веб-мессенджера можно использовать компонент bitrix:im.messenger:
<?php
$APPLICATION->IncludeComponent(
"bitrix:im.messenger",
"",
Array(),
null,
array("HIDE_ICONS" => "N")
);
?>
Перед подключением компонента убедитесь, что на проекте действительно используется соответствующий модуль и функциональность нужна пользователям.
Как вывести текст описания свойства инфоблока
Например, в форме добавления или редактирования элемента инфоблока для пользователей можно вывести подсказку свойства:
<?= htmlspecialcharsbx($arResult["PROPERTY_LIST_FULL"][$propertyID]["HINT"]) ?>
Полезно
Подсказки свойств помогают сделать пользовательские формы понятнее: объяснить формат ввода, требования к файлу или назначение поля.
Как вывести текущую дату в формате сайта
Чтобы вывести текущую дату с учётом формата, установленного в настройках сайта, можно использовать:
<?php
echo date($DB->DateFormatToPHP(CSite::GetDateFormat("FULL")), time());
?>
Такой подход удобен, когда нужно придерживаться общего формата даты, заданного в настройках сайта.
Частые ошибки при работе с шаблонами Битрикс
Забыть ShowHead
Без $APPLICATION->ShowHead() могут не подключиться нужные стили, скрипты, мета-данные и служебные элементы Битрикса.
Не вывести ShowPanel
Если не вызвать $APPLICATION->ShowPanel(), администратор может не увидеть панель управления на сайте.
Писать пути вручную
Вместо жёстких путей к файлам шаблона лучше использовать SITE_TEMPLATE_PATH, чтобы шаблон было проще переносить и поддерживать.
Делать запросы в шаблоне
Лишние запросы к базе внутри шаблона компонента могут замедлить сайт. Лучше готовить данные заранее в result_modifier.php или логике компонента.
Не проверять существование данных
Перед выводом картинок, разделов, свойств и вложенных массивов лучше проверять, что нужный ключ существует и не пустой.
Не экранировать вывод
Названия, свойства и пользовательские данные лучше выводить через htmlspecialcharsbx(), если они не должны содержать HTML.
Мини-шпаргалка разработчика
// Title страницы
$APPLICATION->ShowTitle();
// Заголовок для h1
$APPLICATION->ShowTitle(false);
// Служебная часть head
$APPLICATION->ShowHead();
// Панель администратора
$APPLICATION->ShowPanel();
// Путь к шаблону
SITE_TEMPLATE_PATH;
// Мета-теги
$APPLICATION->ShowMeta("keywords");
$APPLICATION->ShowMeta("description");
// CSS и скрипты
$APPLICATION->ShowCSS();
$APPLICATION->ShowHeadStrings();
$APPLICATION->ShowHeadScripts();
// Название элемента
echo $arItem["NAME"];
// Ссылка на детальную страницу
echo $arItem["DETAIL_PAGE_URL"];
// Анонс
echo $arItem["PREVIEW_TEXT"];
// Детальный текст
echo $arResult["DETAIL_TEXT"];
// Картинка анонса
echo $arItem["PREVIEW_PICTURE"]["SRC"];
// Детальная картинка
echo $arItem["DETAIL_PICTURE"]["SRC"];
// Дата активности
echo $arResult["DISPLAY_ACTIVE_FROM"];
// Дата создания
echo $arItem["DATE_CREATE"];
Итоги и рекомендации
- В основном шаблоне сайта чаще всего используются методы
$APPLICATION:ShowTitle,ShowHead,ShowPanel,ShowMeta,ShowCSSи другие. SITE_TEMPLATE_PATHпомогает корректно подключать файлы текущего шаблона.- В шаблонах компонентов основные данные обычно находятся в
$arResult,$arItemи$arSection. - Перед выводом картинок, свойств и вложенных массивов проверяйте, что данные существуют.
- Для текстовых значений используйте экранирование через
htmlspecialcharsbx(), если поле не должно содержать HTML. - Сложную подготовку данных лучше выносить из шаблона в
result_modifier.phpили в логику компонента.
Нужна помощь?
Поможем с разработкой и доработкой шаблонов 1С-Битрикс: вёрстка, компоненты, меню, карточки товаров, инфоблоки, оптимизация вывода и исправление ошибок в шаблонах.
Заказать доработку Битрикс