Функция CMain::GetTemplatePath в 1С-Битрикс часто используется для получения пути к файлу или каталогу шаблона компонента относительно корня сайта. Она помогает разработчикам гибко подключать файлы (шаблоны, стили, скрипты) и учитывать переопределения в текущем шаблоне или стандартном .default
. Ниже мы разберём, зачем нужна эта функция, как ею пользоваться и рассмотрим несколько примеров из практики.

Описание и параметры функции
string|false CMain::GetTemplatePath(
string rel_path
)
CMain::GetTemplatePath — нестатический метод, возвращающий путь к файлу или каталогу (например, шаблону компонента), основываясь на заданном относительном пути. Если по переданному пути ничего не найдено, метод вернёт false.
Параметры:
- rel_path Путь к файлу или директории компонента. Например,
"bitrix:catalog.section/templates/.default/template.php"
или"components/bitrix/news/news"
, или даже"bitrix:news.list/.default/style.css"
. Можно указывать как путь к файлу, так и путь к директории.
Алгоритм поиска пути
При вызове GetTemplatePath(rel_path) система выполняет поиск файла или директории по такому приоритету:
/bitrix/templates/ID_текущего_шаблона_сайта/<component_path>
/bitrix/templates/.default/<component_path>
/bitrix/modules/ID_модуля/install/templates/<component_path>
Где:
- ID_текущего_шаблона_сайта — название (код) установленного шаблона в настройках сайта (например,
esprimo_corp_v1
). - component_path — это тот же путь, что вы передали в
rel_path
, но в контексте структуры каталога с компонентами. Например, если вы указали"components/bitrix/news/news"
, то он так и будет искаться внутри шаблона. Если вы указали"bitrix:catalog.section/custom_template"
— система сконвертирует это в путь видаbitrix/catalog.section/custom_template
. - ID_модуля — определяется как первый подкаталог в пути компонента (к примеру, для
bitrix:news.list
этоbitrix
).
Такой механизм позволяет:
- Сначала искать файл или директорию в текущем шаблоне (если он переопределён).
- Если не найден — искать в .default.
- Если и там нет, — в каталоге шаблонов модуля в /bitrix/modules/.../install/templates/.
Учтите, что путь может лежать и в директории /local/
. Если у вас файлы компонентов или шаблонов находятся в /local/templates/
, метод GetTemplatePath также будет их корректно обрабатывать (правила поиска аналогичны).
Примеры использования
Пример 1. Получение пути к шаблону компонента
Допустим, вы хотите получить путь к шаблону компонента новостей, не указывая явно название текущего шаблона. Вы можете написать:
<?php
$path = $APPLICATION->GetTemplatePath('components/bitrix/news/news');
// Например, результат будет таким (если найдено в текущем шаблоне):
// /local/templates/esprimo_corp_v1/components/bitrix/news/news
if ($path !== false) {
// Файл/директория существует по этому пути
// Можно что-то включать или подключать
// include $_SERVER['DOCUMENT_ROOT'] . $path . '/template.php';
} else {
// Не найдено ни в текущем шаблоне, ни в .default, ни в модулях
// Обработка ситуации
}
?>
Здесь GetTemplatePath:
- Попытается найти указанную директорию
news
в текущем шаблоне (esprimo_corp_v1
). - Если не найдёт — проверит
.default
. - Если и там нет — проверит
install/templates
в каталоге модуляbitrix
.
Пример 2. Подключение файла (стилей, скриптов и т. д.)
Рассмотрим, что вы хотите подключить особый файл стилей custom_style.css
, который лежит в директории компонента. Предположим, ваш компонент bitrix:news.list
и путь к css-файлу — bitrix:news.list/.default/custom_style.css
. Тогда:
<?php
$cssPath = $APPLICATION->GetTemplatePath("bitrix:news.list/.default/custom_style.css");
if ($cssPath !== false) {
// Подключаем найденный файл
$APPLICATION->SetAdditionalCSS($cssPath);
}
?>
При этом:
- Система проверит наличие
custom_style.css
в папке текущего шаблона. - Если не найдёт —
.default
. - И если всё ещё нет — файлы модуля.
Пример 3. Правильное использование директории
Если нужно получить путь к директории (к примеру, вы хотите прочитать несколько файлов из неё), укажите её без ведущего слэша:
<?php
// Вернёт строку, начинающуюся от корня сайта, если директория будет найдена
$path = $APPLICATION->GetTemplatePath('components/bitrix/menu/custom/');
if ($path !== false) {
// Можно, например, сканировать директорию, подключать файлы и т.д.
// $dirFullPath = $_SERVER['DOCUMENT_ROOT'] . $path;
// $files = scandir($dirFullPath);
}
?>
Пример 4. Особенности при указании пути со слэшем в начале
Будьте внимательны: если вы передадите путь с ведущим слэшем, GetTemplatePath всегда вернёт его «как есть», даже если ничего не найдено. Например:
<?php
// Возвращает ровно /components/bitrix/menu/custom/
// (без проверки наличия директории)
$path = $APPLICATION->GetTemplatePath('/components/bitrix/menu/custom/');
// В этом случае $path почти наверняка не укажет на реальную директорию,
// если она не существует по такому абсолютному пути.
?>
Это связано с тем, что метод считает путь с начальным слэшем абсолютным и не пытается «привязывать» его к шаблонам. Поэтому, чтобы метод корректно искал по описанному алгоритму (текущий шаблон → .default → модуль), не добавляйте «/
» в начале пути.
Возвращаемое значение
- string — путь к найденной директории/файлу, начинающийся с
"/"
(от корня сайта). - false — если по переданному пути ничего не было найдено ни в текущем шаблоне, ни в
.default
, ни в каталоге модуля.
Важные нюансы
- Метод не статический Чтобы вызывать
GetTemplatePath
, у вас должен быть объект$APPLICATION
(экземплярCMain
), доступный, как правило, в любом шаблоне или в файле компонента. Если вы пишете код в модуле или классе, убедитесь, что у вас есть доступ к$APPLICATION
. - Отсутствие ведущего слэша Рекомендуется указывать путь без ведущего слэша, чтобы сработал полный алгоритм поиска. С ведущим слэшем метод просто вернёт переданную строку.
- /bitrix/ и /local/ Структура 1С-Битрикс позволяет размещать компоненты, шаблоны и модули как в
/bitrix/
, так и в/local/
. Метод GetTemplatePath корректно работает в обоих случаях, если файлы или директории действительно там расположены. - Гибкость подключения Вы можете подключать любые типы файлов:
.php
,.css
,.js
,.html
,.json
и т.д. Главное — чтобы путь соответствовал структуре (компонент, шаблон) и был корректен с точки зрения Битрикс.
Заключение
CMain::GetTemplatePath — мощный и удобный инструмент для поиска и подключения файлов в шаблонах 1С-Битрикс. Он решает задачу поиска переопределённых файлов в текущем шаблоне, а при отсутствии — возвращается к дефолтным вариантам.
- Если у вас свои кастомные стили, скрипты или шаблоны в папке
/local/templates/
или/bitrix/templates/
, вы можете безопасно подключать их через GetTemplatePath, не заботясь о прямых путях. - Метод возвращает результат в виде строки, начинающейся от корня сайта, либо false, если ничего не нашлось.
- Важно не забывать про нюанс с ведущим «
/
» — чтобы алгоритм поиска работал, всегда указывайте пути без начального слэша.
Применяйте GetTemplatePath всякий раз, когда нужно гибко подключать дополнительные файлы, учитывая приоритеты переопределения в шаблонах. Это облегчает поддержку проекта и позволяет быстро переключаться между разными вариантами оформления.