В Битрикс существует набор предопределенных констант, которые упрощают разработку, особенно в многосайтовых и мультиязычных проектах. Они позволяют динамически получать пути, идентификаторы сайтов и языковые настройки без жесткого кодирования.
В этой статье разберем самые полезные константы, их применение и лучшие практики.
1. SITE_TEMPLATE_PATH – путь к текущему шаблону
Что делает: Возвращает путь к папке активного шаблона сайта (например, /local/templates/main).
Где использовать:
-
Подключение CSS и JS.
-
Вставка файлов из шаблона (логотипы, блоки).
Примеры:
// Подключение стилей и скриптов (D7)
\Bitrix\Main\Page\Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/css/style.min.css');
\Bitrix\Main\Page\Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/js/main.js');
// Включение файла из шаблона
$APPLICATION->IncludeFile(
SITE_TEMPLATE_PATH . '/inc/header.php',
[],
['SHOW_BORDER' => false]
);
Плюсы:
✔ Автоматически подстраивается под текущий шаблон.
✔ Удобно для многосайтовости.
Минусы:
В старых проектах может встречаться устаревший синтаксис ($APPLICATION->AddHeadScript).
2. SITE_ID – идентификатор сайта
Что делает: Содержит символьный код текущего сайта (например, s1).
Где использовать:
-
Разделение логики между разными сайтами.
-
Разные настройки для каждого сайта.
Пример:
if (SITE_ID === 's1') {
// Логика только для сайта s1
} elseif (SITE_ID === 'en') {
// Логика для английской версии
}
Плюсы:
Простота использования в многосайтовых проектах.
Минусы:
Жесткая привязка к коду сайта (лучше проверять через CSite::GetSiteByID()).
3. SITE_DIR – корневая директория сайта
Что делает: Возвращает путь к корню текущего сайта (/ или /en/).
Где использовать:
-
Формирование ссылок.
-
Работа с ЧПУ в многоязычных проектах.
Пример:
$newsUrl = SITE_DIR . 'news/'; // /news/ или /en/news/
$catalogUrl = SITE_DIR . 'catalog/';
Плюсы:
Автоматически учитывает языковые префиксы.
Минусы:
Может потребоваться ручная обработка сложных URL-структур.
4. LANGUAGE_ID – текущий язык сайта
Что делает: Содержит код текущего языка (ru, en и др.).
Где использовать:
-
Мультиязычные версии.
-
Разные контентные блоки для языков.
Пример:
if (LANGUAGE_ID === 'en') {
echo 'Welcome!';
} else {
echo 'Добро пожаловать!';
} Важно:
-
LANGUAGE_ID– стандартная константа, аLANG– устаревшая (не рекомендуется). -
Для надежности можно использовать:
\Bitrix\Main\Context::getCurrent()->getLanguage();
5. Другие полезные константы
| Константа | Описание | Пример |
|---|---|---|
| BITRIX_ROOT |
Путь к папке /bitrix/
|
include BITRIX_ROOT . '/modules/main/include/prolog_before.php';
|
| DOCUMENT_ROOT | Физический корень сайта |
$filePath = DOCUMENT_ROOT . '/upload/file.txt';
|
| NO_KEEP_STATISTIC | Отключение статистики (для AJAX) |
define('NO_KEEP_STATISTIC', true);
|
| NOT_CHECK_PERMISSIONS | Игнорировать проверку прав |
define('NOT_CHECK_PERMISSIONS', true);
|
Заключение
Использование констант в Битрикс делает код чище и удобнее для поддержки. Главные выводы:
SITE_TEMPLATE_PATH – для работы с файлами шаблона.
SITE_ID – для разделения логики сайтов.
SITE_DIR – для корректных ссылок в многосайтовости.
LANGUAGE_ID – вместо LANG для языковых версий.
Дополнительные константы (NO_KEEP_STATISTIC, NOT_CHECK_PERMISSIONS) помогают в оптимизации.
Документация: