Основные функции вывода в шаблонах 1С-Битрикс

1С-Битрикс

Основные функции вывода в шаблонах 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>

Основные переменные в шаблонах компонентов

В шаблонах компонентов данные чаще всего приходят в массивах $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, но только если вы понимаете источник данных и доверяете ему.

Как вывести картинку и подставить заглушку, если её нет

Частая задача в шаблоне компонента — проверить, есть ли картинка у элемента. Если картинки нет, можно подставить статичную заглушку.

<?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")
);
?>

Как вывести количество товара на складе

В списке товаров можно получить данные торгового каталога по 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 "много";
}
?>

Как вывести название раздела внутри элемента

Например, в детальной новости можно указать, к какому разделу она относится:

<?= 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"];

Итоги и рекомендации

Нужна помощь?

Поможем с разработкой и доработкой шаблонов 1С-Битрикс: вёрстка, компоненты, меню, карточки товаров, инфоблоки, оптимизация вывода и исправление ошибок в шаблонах.

Заказать доработку Битрикс

Читайте также

Все публикации