Рассматриваем вариант, когда требуется получить название или путь к шаблону сайта без использования констант, типа SITE_TEMPLATE_PATH, к примеру, из административной части.

В Битриксе можно узнать, какой шаблон сайта используется для конкретного SITE_ID
, с помощью API, например, через вызов метода CSite::GetByID
. Этот метод позволяет получить данные о сайте, включая информацию о текущем используемом шаблоне.
Получаем название шаблона для текущего сайта
Пример кода для получения шаблонов сайта:
<?php
// Подключаем библиотеку Битрикса
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
// Задаем SITE_ID (например, 's1')
$siteId = 's1';
// Получаем данные о сайте
$rsSite = CSite::GetByID($siteId);
if ($arSite = $rsSite->Fetch()) {
// Выводим шаблоны, которые используются на данном сайте
echo "Шаблоны, привязанные к сайту {$siteId}:<br>";
// Список шаблонов сайта
$arTemplates = CSite::GetTemplateList($siteId);
while ($arTemplate = $arTemplates->Fetch()) {
echo "Шаблон: " . $arTemplate["TEMPLATE"] . "<br>";
echo "Условие: " . $arTemplate["CONDITION"] . "<br><br>";
}
} else {
echo "Сайт с SITE_ID {$siteId} не найден.";
}
?>
Что происходит в коде:
- Сначала через метод
CSite::GetByID($siteId)
получаем основную информацию о сайте с указаннымSITE_ID
. - Для получения списка шаблонов сайта используется метод
CSite::GetTemplateList($siteId)
, который возвращает массив с шаблонами и соответствующими условиями их применения. - Поле
TEMPLATE
указывает на код шаблона (например,my_template
), а полеCONDITION
определяет, при каких условиях этот шаблон применяется (например, для определённой директории или страницы).
Полезные пояснения:
- Основной шаблон: Если для
CONDITION
пусто (""
), то это основной шаблон, который используется на всем сайте. - Шаблоны с условиями: Шаблоны с заполненным полем
CONDITION
применяются только в определённой части сайта, если условия для них выполнены.
Варианты использования:
Этот код поможет, например, для диагностирования, какой шаблон и где применяется, а также для настройки или отладки темы сайта.
Обратите внимание, что вам нужно обладать правами на доступ к административным функциям и использовать соответствующую конфигурацию окружения.
Получаем название шаблона для текущего сайта и путь к нему
Чтобы узнать не только название шаблона, но и путь, где он находится, можно выполнить дополнительную проверку с помощью структуры папок и стандартных функций PHP. В Битриксе шаблоны расположены в директории /bitrix/templates
, либо, в случае кастомных решений, в /local/templates
. Комбинируя имя шаблона с этими путями, мы можем получить полный путь к директории шаблона.
Вот пример кода, который выводит как название шаблона, так и путь к нему:
<?php
// Подключаем ядро Битрикс
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
// Указываем SITE_ID (например, 's1')
$siteId = 's1';
// Получаем данные о сайте
$rsSite = CSite::GetByID($siteId);
if ($arSite = $rsSite->Fetch()) {
echo "Шаблоны, привязанные к сайту {$siteId}:<br>";
// Получаем список шаблонов, связанных с данным сайтом
$arTemplates = CSite::GetTemplateList($siteId);
while ($arTemplate = $arTemplates->Fetch()) {
$templateName = $arTemplate['TEMPLATE'];
// Проверяем путь к шаблону (возможны пути в /local/templates или в /bitrix/templates)
$templatePathLocal = $_SERVER['DOCUMENT_ROOT'] . '/local/templates/' . $templateName;
$templatePathBitrix = $_SERVER['DOCUMENT_ROOT'] . '/bitrix/templates/' . $templateName;
// Определяем реальный путь к шаблону
if (file_exists($templatePathLocal)) {
$realTemplatePath = $templatePathLocal;
} elseif (file_exists($templatePathBitrix)) {
$realTemplatePath = $templatePathBitrix;
} else {
$realTemplatePath = "Шаблон не найден.";
}
// Выводим данные
echo "Шаблон: {$templateName}<br>";
echo "Условие: {$arTemplate['CONDITION']}<br>";
echo "Путь: {$realTemplatePath}<br><br>";
}
} else {
echo "Сайт с SITE_ID {$siteId} не найден.";
}
?>
Разбор кода:
CSite::GetTemplateList($siteId)
: возвращает список шаблонов, связанных с указанным сайтом, включая их названия и условия активации.- Проверяется существование шаблона в каталоге
/local/templates
($templatePathLocal
) и в каталоге/bitrix/templates
($templatePathBitrix
). - Если шаблон существует в одной из директорий, возвращается полный путь к нему.
- Если шаблон не найден ни в
/local/templates
, ни в/bitrix/templates
, выводится сообщение "Шаблон не найден".
Результат работы:
Для каждого шаблона сайт будет показывать следующую информацию:
- Название шаблона.
- Условие его применения (поле
CONDITION
для точной настройки в зависимости от страниц). - Абсолютный путь к директории шаблона в файловой системе.
Примечание
Пути шаблонов по умолчанию могут изменяться, если сайт настроен нестандартно (например, используются собственные пути через уровни абстракции). Если шаблон находится за пределами стандартных директорий /bitrix/templates
или /local/templates
, это нужно учитывать дополнительно.