Как в Bitrix получить путь к шаблону сайта

В 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/, избегайте жестко заданых путей до шаблона в коде и учитывайте кэширование. Тогда ваш код будет не только рабочим, но и готовым к масштабированию.

Рубрики: PHP Bitrix

Если есть вопросы, что-то в статье не понятно или нашли ошибку, напишите об этом в комментариях, все комментарии читаются и по возможности материал будет доработан.
Популярные статьи

Как добавить свою вкладку в карточку элемента СРМ?

Вкладки в карточках элементов CRM очень удобное решение. В этой статье разберем как добавить свою вкладку в карточку элемента CRM с помощью создания обработчика на событие.

Подключить bitrix без подключения шаблона сайта

В статье приводится пример кода подключения bitrix без подключения шаблона сайта. Так же описано когда это может пригодится.

Bitrix сбросить буфер вывода

Функция RestartBuffer() в Bitrix используется для сброса буфера вывода. Она позволяет прервать вывод страницы на определенном этапе выполнения скрипта и начать вывод заново. В статье рассмотрим основные сценарии использования данной функции с примерами кода.

Bitrix подключить модуль

Так как bitrix состоит из большого количества различных модулей, знать как их правильно подключать просто необходимо.

Bitrix регистрация своего события

В статье приводится пример регистрации собственного события в bitrix и добавления на него обработчика.

Как в bitrix получить параметры запроса

Из этой статьи вы узнаете, какие классы и методы в bitrix помогут получить данные запроса без использования глобальных переменных. Это важный навык, который обязательно пригодится в вашей работе.

Комментарии

Комментариев пока нет
Данный сайт использует файлы cookies. Продолжая просмотр сайта, вы соглашаетесь с использованием файлов cookies.
ОК