При разработке сайтов на 1С-Битрикс часто возникают ситуации, когда определенный контент или функционал нужно отображать только на конкретных страницах. Это может быть специальный баннер на главной, дополнительные блоки в определенных разделах, или уникальные элементы интерфейса для отдельных страниц. Платформа предоставляет несколько эффективных способов для реализации такой логики с помощью встроенного API.
Вывод информации только на главной странице
Способ 1: Проверка текущей страницы
<?if($APPLICATION->GetCurPage() == "/"):?>
<!-- Ваш контент или компонент для главной страницы -->
<div class="main-page-banner">
Специальное предложение только для посетителей главной страницы!
</div>
<?endif;?>Способ 2: Проверка с index.php
<?if($APPLICATION->GetCurPage() == "/index.php"):?>
<!-- Код для главной страницы -->
<?$APPLICATION->IncludeComponent("your:component", "", array());?>
<?endif;?>Способ 3: Использование GetCurDir()
<?if($APPLICATION->GetCurDir() == "/"):?>
<!-- Контент исключительно для главной -->
<?endif;?>Вывод информации везде, КРОМЕ главной страницы
Современный подход с SITE_DIR
<?
$curPage = $APPLICATION->GetCurPage(true);
?>
<?if ($curPage != SITE_DIR."index.php"):?>
<h1><?=$APPLICATION->ShowTitle(false);?></h1>
<nav class="breadcrumbs"><?$APPLICATION->ShowChain();?></nav>
<?endif?>Компактный вариант
<?if($APPLICATION->GetCurPage() != "/"):?>
<!-- Этот контент не показывается на главной -->
<div class="internal-page-content">
Дополнительная информация для внутренних страниц
</div>
<?endif;?>Вывод информации в определенных разделах
Проверка вхождения пути (рекомендуемый способ)
<?
// Проверяем наличие "/catalog/" в пути текущей страницы
if (strpos($APPLICATION->GetCurDir(), "/catalog/") !== false):?>
<div class="catalog-special">
Специальное предложение для посетителей каталога!
</div>
<?endif;?>Использование CSite::InDir()
<?if(CSite::InDir('/about/')):?>
<!-- Контент для раздела "О компании" и его подразделов -->
<div class="about-section-widget">
Дополнительная информация о компании
</div>
<?endif;?>Точное совпадение пути
<?if ($APPLICATION->GetCurDir() == "/catalog/"):?>
<!-- Контент только для корневого раздела каталога -->
<section class="main-catalog-promo">
<h2>Главный раздел каталога</h2>
</section>
<?endif;?>Практические примеры использования
Пример 1: Разные мета-теги для разделов
<?
// Устанавливаем специальные мета-теги для раздела блога
if (strpos($APPLICATION->GetCurDir(), "/blog/") !== false) {
$APPLICATION->SetPageProperty("description", "Читайте последние новости в нашем блоге");
$APPLICATION->SetTitle("Блог компании");
}
?>Пример 2: Уникальный CSS для конкретного раздела
<?
// Подключаем специальные стили для раздела портфолио
if (CSite::InDir('/portfolio/')) {
$APPLICATION->SetAdditionalCSS('/css/portfolio-special.css');
}
?>Пример 3: Разные хедеры для разных разделов
<?
if ($APPLICATION->GetCurPage() == "/") {
// Прозрачный хедер для главной
include 'header-transparent.php';
} elseif (CSite::InDir('/catalog/')) {
// Упрощенный хедер для каталога
include 'header-catalog.php';
} else {
// Стандартный хедер для остальных страниц
include 'header-default.php';
}
?>Пример 4: Специальные скрипты для определенных страниц
<?
// Добавляем карту только на странице контактов
if ($APPLICATION->GetCurDir() == "/contacts/") {
$APPLICATION->AddHeadScript('/js/map-init.js');
$APPLICATION->SetAdditionalCSS('/css/map-styles.css');
}
?>Рекомендации по использованию
-
Производительность: Используйте
strposвместоstrstrдля проверки вхождения строки -
Читаемость: Для сложных условий выносите логику в отдельные переменные
-
Кэширование: Учитывайте влияние условий на кэширование страниц
-
Поддержка: Комментируйте сложные условия для других разработчиков
<?
// Сложное условие с комментариями
$isCatalogSection = strpos($APPLICATION->GetCurDir(), "/catalog/") !== false;
$isInternalPage = $APPLICATION->GetCurPage() != "/";
$showSpecialBlock = $isCatalogSection && $isInternalPage;
if ($showSpecialBlock):?>
<!-- Специальный блок для внутренних страниц каталога -->
<?endif;?>Эти методы позволяют гибко управлять отображением контента в зависимости от текущей страницы, создавая персонализированный пользовательский опыт для разных разделов сайта.