Метод CSite::InDir()
в CMS Битрикс используется для проверки, находится ли текущая страница в определенной директории сайта. Этот метод особенно полезен для выполнения условных операций в зависимости от текущего местоположения пользователя на сайте. В этой статье мы подробно рассмотрим, как использовать CSite::InDir()
, и приведем множество примеров для различных сценариев.

Основы использования CSite::InDir()
Метод CSite::InDir()
принимает два параметра:
$dir
(обязательный) — путь к директории, которую нужно проверить.$exact
(необязательный) — флаг, указывающий, должно ли совпадение быть точным. По умолчанию значениеfalse
, что означает, что метод будет проверять, начинается ли текущий путь с указанной директории.
Синтаксис:
CSite::InDir($dir, $exact = false);
Примеры использования
Пример 1: Проверка нахождения в разделе каталога
if (CSite::InDir('/catalog/')) {
echo "Вы находитесь в разделе каталога.";
} else {
echo "Вы не в разделе каталога.";
}
В этом примере, если текущая страница находится в директории /catalog/
или любой её поддиректории, будет выведено сообщение "Вы находитесь в разделе каталога.".
Пример 2: Проверка точного совпадения директории
if (CSite::InDir('/about/', true)) {
echo "Вы находитесь в разделе 'О компании'.";
} else {
echo "Вы не в разделе 'О компании'.";
}
В этом примере, если текущая страница точно совпадает с директорией /about/
, будет выведено сообщение "Вы находитесь в разделе 'О компании'.".
Пример 3: Отображение баннера в определенном разделе
if (CSite::InDir('/promo/')) {
echo "
";
}
В этом примере баннер будет отображаться только в разделе /promo/
и его поддиректориях.
Пример 4: Подключение дополнительных стилей для раздела блога
if (CSite::InDir('/blog/')) {
$APPLICATION->SetAdditionalCSS('/styles/blog.css');
}
В этом примере дополнительный CSS-файл будет подключаться только для страниц в разделе /blog/
.
Пример 5: Отображение различных меню в зависимости от раздела
if (CSite::InDir('/services/')) {
$APPLICATION->IncludeComponent(
"bitrix:menu",
"horizontal_multilevel",
array(
"ROOT_MENU_TYPE" => "services",
"MENU_CACHE_TYPE" => "A",
"MENU_CACHE_TIME" => "3600",
"MENU_CACHE_USE_GROUPS" => "Y",
"MENU_CACHE_GET_VARS" => array(),
"MAX_LEVEL" => "2",
"CHILD_MENU_TYPE" => "services",
"USE_EXT" => "Y",
"DELAY" => "N",
"ALLOW_MULTI_SELECT" => "N"
)
);
} else {
$APPLICATION->IncludeComponent(
"bitrix:menu",
"horizontal_multilevel",
array(
"ROOT_MENU_TYPE" => "top",
"MENU_CACHE_TYPE" => "A",
"MENU_CACHE_TIME" => "3600",
"MENU_CACHE_USE_GROUPS" => "Y",
"MENU_CACHE_GET_VARS" => array(),
"MAX_LEVEL" => "2",
"CHILD_MENU_TYPE" => "left",
"USE_EXT" => "Y",
"DELAY" => "N",
"ALLOW_MULTI_SELECT" => "N"
)
);
}
В этом примере для раздела /services/
будет подключаться одно меню, а для остальных разделов — другое.
Пример 6: Логирование посещений определенного раздела
if (CSite::InDir('/admin/')) {
file_put_contents('/path/to/admin_log.txt', 'Посещение административного раздела: ' . date('Y-m-d H:i:s') . PHP_EOL, FILE_APPEND);
}
В этом примере каждое посещение раздела /admin/
будет логироваться в файл admin_log.txt
.
Пример 7: Отображение уведомления для пользователей в личном кабинете
if (CSite::InDir('/personal/')) {
echo "Добро пожаловать в ваш личный кабинет!";
}
В этом примере уведомление будет отображаться только в разделе /personal/
.
Пример 8: Подключение дополнительных скриптов для раздела новостей
if (CSite::InDir('/news/')) {
$APPLICATION->AddHeadScript('/js/news.js');
}
В этом примере дополнительный JavaScript-файл будет подключаться только для страниц в разделе /news/
.
Пример 9: Отображение различных шапок в зависимости от раздела
if (CSite::InDir('/about/')) {
$APPLICATION->SetPageProperty("title", "О компании");
$APPLICATION->SetPageProperty("description", "Информация о нашей компании.");
} elseif (CSite::InDir('/services/')) {
$APPLICATION->SetPageProperty("title", "Наши услуги");
$APPLICATION->SetPageProperty("description", "Описание услуг, которые мы предоставляем.");
} else {
$APPLICATION->SetPageProperty("title", "Главная страница");
$APPLICATION->SetPageProperty("description", "Добро пожаловать на наш сайт.");
}
В этом примере заголовок и описание страницы будут изменяться в зависимости от раздела.
Заключение
Метод CSite::InDir()
является мощным инструментом для управления контентом и функциональностью сайта в зависимости от текущего местоположения пользователя. Использование этого метода позволяет создавать более гибкие и адаптивные веб-сайты, улучшая пользовательский опыт. Надеемся, что приведенные примеры помогут вам лучше понять, как и когда использовать CSite::InDir()
в своих проектах на CMS Битрикс.