Yandex Metrika
sanches.free 1 просмотр

«Магия» путей в 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 дней гарантии