«Магия» путей в 1С‑Битрикс: сайтовый шаблон и каталог компонента
Зачем вообще «магия» пути
В шаблоне или логике рядом с компонентом часто нужны надёжные адреса к CSS, медиафайлам и соседним include. Руками набивать /bitrix/templates/<имя>/ — хрупко: название может смениться, а при тестировании нескольких шаблонов вы обязательно промахнётесь хотя бы в одном окружении. Ядро уже формирует канонический путь — разумнее опереться на него.
SITE_TEMPLATE_PATH — база текущего шаблона сайта
Константа хранится как путь (от корня документа), по которому сейчас подхватывается активный сайтовый шаблон страницы. Типичный вид — сегменты вроде /bitrix/templates/your_catalog_theme/ (название в примере вымышленное, ваше будет своим).
В подключаемых файлах шаблона удобно собирать путь к ресурсу так:
<?php
$iconRel = SITE_TEMPLATE_PATH . '/images/widget-close.svg';Не подменяйте константу на «захардкоженный» алиас с другим регистром сегментов без необходимости — при переносе на сервер с чувствительной ФС ошибка может проявиться тихим 404 по файлу ассета.
$templateFolder у компонента
В точке включения компонента (в том числе в .default/template.php и связанном result_modifier.php) уже определена переменная $templateFolder — это каталог активного шаблона этого компонента. Она может указывать, например, на вложенную структуру наподобие /bitrix/components/demo.news.list/templates/.default, если вы находитесь в шаблоне по умолчанию (имена приведены исключительно для иллюстрации структуры каталогов).
<?php
$arModuleRel = [
'bundles/widget.js',
];
foreach ($arModuleRel as $relPath) {
$APPLICATION->AddHeadScript($templateFolder . '/' . $relPath);
}Важное отличие от константы сайтового шаблона: $templateFolder живёт только в области компонента и отражает тот темизированный вариант, который реально отрендерился, а не глобальную тему страницы.
Когда смотреть ещё глубже
Если вам нужно знать, какой файл шаблонизатор выберет до фактического render, есть механизмы выбора шаблонов через параметры и epilog‑логика — но это уже следующий слой после базовых SITE_TEMPLATE_PATH/$templateFolder. На практике для версточных задач этого слоя почти всегда достаточно.
Памятка
- Сайтовый шаблон —
SITE_TEMPLATE_PATH, ресурсы лежите рядом в каталогах текущего оформления. - Шаблон компонента —
$templateFolder, живёт только в коде связки с компонентом. - Всегда предпочитайте эти переменные «ручному» сбору строки со слешем в начале.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии