В Bitrix — каждый шаблон сайта играет роль фундамента для интерфейса. Но как узнать, где лежит этот самый шаблон? Путь к директории шаблона — ключ к кастомизации, подключению стилей, скриптов и работе с компонентами. В этой статье разберем, как грамотно получить этот путь, чтобы не ломать голову при переносе сайта или обновлении системы. Погнали.
Зачем знать путь к шаблону?
Шаблоны в Bitrix — это основа визуальной части сайта. Они хранят HTML, CSS, JS и логику отображения страниц. Зная путь к директории шаблона, вы можете динамически подключать ресурсы, адаптировать компоненты или работать с несколькими сайтами в одном проекте. Без этого — либо хардкод, либо вечный поиск нужной папки в дебрях /bitrix/. А это, поверьте, не то, чем хочется заниматься в пятницу вечером.
Где находятся шаблоны сайтов
Bitrix исторически поддерживает два каталога для шаблонов:
/bitrix/templates/
— системный, обновляется вместе с ядром/local/templates/
— пользовательский, рекомендуется для всех кастомных шаблонов
Система автоматически выберет шаблон, указанный в настройках сайта (Настройки → Настройки продукта → Сайты → Список сайтов). В большинстве проектов шаблон лежит в local, и это хорошо: обновления ядра его не затронут.
Способы получить путь к шаблону
Константа SITE_TEMPLATE_PATH
Это, пожалуй, самый простой способ. Константа SITE_TEMPLATE_PATH
возвращает полный путь к текущему шаблону сайта, например, /bitrix/templates/my_template
.
echo SITE_TEMPLATE_PATH;
// /local/templates/.default
Можно безопасно использовать внутри header.php
, footer.php
, шаблонов компонентов и других участков, где уже определён шаблон.
$APPLICATION->GetTemplatePath()
Метод главного объекта $APPLICATION
. Возвращает web-путь к папке шаблона, можно указывать относительный путь внутри шаблона.
global $APPLICATION;
echo $APPLICATION->GetTemplatePath("");
// /local/templates/.default
Если передать путь:
echo $APPLICATION->GetTemplatePath("css/style.css");
// /local/templates/.default/css/style.css
Переменная $templateFolder
Если вы работаете внутри шаблона компонента (например, template.php
), используйте $templateFolder
. Она возвращает путь к папке шаблона относительно корня сайта. Пример:
<img src="<?=$templateFolder?>/images/logo.png" alt="Логотип">
Абсолютный путь
Если нужен абсолютный путь на сервере, а не url, то можно использовать $_SERVER["DOCUMENT_ROOT"]:
$fullPath = $_SERVER["DOCUMENT_ROOT"] . SITE_TEMPLATE_PATH;
Подходит для работы с файловыми операциями: file_exists
, fopen
, include
.
Ограничения
В init.php
или при вызове скрипта напрямую (например, через ajax.php
) шаблон может быть ещё не определён. Попытка использовать SITE_TEMPLATE_PATH
там может привести к ошибке или пустому значению. Поэтому лучше перенести использование SITE_TEMPLATE_PATH
в файлы самого шаблона сайта (header.php
, footer.php
и т.д.) или в шаблоны компонентов.
Примеры использования
Допустим, вы хотите подключить кастомный шрифт в header.php
. Вот как это сделать:
global $APPLICATION;
$APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH . '/fonts/custom-font.css');
вот пример для подключения JS-скрипта:
\Bitrix\Main\Page\Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . "/js/main.js");
Вывод
Получение пути к директории шаблона в Bitrix — это не ракетостроение, но требует понимания системы. В большинстве случаев будет достаточно SITE_TEMPLATE_PATH
. Для шаблонов компонентов стоит использовать $templateFolder
. Храните шаблоны в /local/, избегайте жестко заданых путей до шаблона в коде и учитывайте кэширование. Тогда ваш код будет не только рабочим, но и готовым к масштабированию.