Назад

Условный вывод контента на страницах в 1С-Битрикс

Главная
Блог
Условный вывод контента на страницах в 1С-Битрикс

При разработке сайтов на 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');
}
?>

Рекомендации по использованию

  1. Производительность: Используйте strpos вместо strstr для проверки вхождения строки

  2. Читаемость: Для сложных условий выносите логику в отдельные переменные

  3. Кэширование: Учитывайте влияние условий на кэширование страниц

  4. Поддержка: Комментируйте сложные условия для других разработчиков

<?
// Сложное условие с комментариями
$isCatalogSection = strpos($APPLICATION->GetCurDir(), "/catalog/") !== false;
$isInternalPage = $APPLICATION->GetCurPage() != "/";
$showSpecialBlock = $isCatalogSection && $isInternalPage;

if ($showSpecialBlock):?>
    <!-- Специальный блок для внутренних страниц каталога -->
<?endif;?>

Эти методы позволяют гибко управлять отображением контента в зависимости от текущей страницы, создавая персонализированный пользовательский опыт для разных разделов сайта.

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи