Все о сайдбарах в Битрикс.

SIDEBAR or not SIDEBAR?
Все, что вы должны знать о сайдбарах при внедрении сайтов под Битрикс.

Часто бывает так, что страницы сайта немного отличаются по структуре. На одних есть сайдбар, на других нет. На одних есть левое меню, другие - полноэкранные. В этой статье мы рассмотрим все возможные варианты.

1. Что делать, если на главной странице нет левого (правого) меню, а на остальных есть? Tip & Tricks для сайтов на Битрикс.

Этот вариант - самый простой в реализации. Не нужно создавать разные шаблоны для одного сайта только из-за того, что главная страница отличается от остальных.
Достаточно просто использовать конструкцию
<?/* Если мы НЕ находимся на главной */?>
<?if (!CSite::InDir('/index.php')) :?>
<? endif; ?>
То есть, вы внедряете шаблон, и после обозначения главного контейнера будет что-то вроде этого:
<?if (!CSite::InDir('/index.php')) :?>
     /** Заголовок **/
     <?$APPLICATION->ShowTitle(false);?>

     /** Крошки **/
     <?$APPLICATION->IncludeComponent(
   "bitrix:breadcrumb",
   "",
   Array(
      "COMPONENT_TEMPLATE" => ".default",
      "PATH" => "",
      "SITE_ID" => "-",
      "START_FROM" => "0"
   )
     );?>

    /** Левый сайдбар **/
    <div class="col-lg-3">
      Здесь может быть левое меню, включаемая область или любой другой компонент.
    </div>

    /** Рабочая область **/
    <div class="col-lg-9">
<?endif;?

#WORK_AREA#

<?if (!CSite::InDir('/index.php')) :?>
     /** Закрываем Рабочая область **/
     </div>
<?endif;?
2. Что делать, если сайдбар нужен только в каталоге?

Для этого в настройках комплексного компонента Каталог есть галочка Показывать боковую панель в списке товаров: (если сайдбар нужен в списке товаров) и Показывать боковую панель на детальной странице: (если сайдбар нужен в детальной карточке товара).
Указываем в поле Путь к включаемой области для вывода информации в боковой панели: путь к области, например /include/catalog.php. Добавляем файл, расположенный по указанному пути и о чудо! сайдбар появляется в каталоге.

NB: если сайдбар нужен на общей странице каталога, то копируем следующий код в sections.php
if ($isSidebar):?>     
<div class="col-lg-3">
      <?
      $APPLICATION->IncludeComponent("bitrix:main.include", "", array(
          "AREA_FILE_SHOW" => "file",
          "PATH" => $arParams["SIDEBAR_PATH"],
          "AREA_FILE_RECURSIVE" => "N",
          "EDIT_MODE" => "html",
        ),
        false,
        array('HIDE_ICONS' => 'Y')
      );
      ?>
</div>
<? endif; ?>
3. Что делать, если сайдбар нужен на некоторых страницах сайта, выборочно?

В этом случае разумнее всего использовать свойства страницы.

Из визуальной части.
На панели управления Изменить раздел - Свойства раздела - Редактировать свойства папки в панели управления. В открывшейся форме, вкладка Свойства Каталога. В левом столбце пишем название свойства, например SIDEBAR, в правом - значение, например Y.

После этого мы можем обратиться к этому свойству из шаблона сайта.
<?if($APPLICATION->GetProperty("SIDEBAR") == "Y"):?>      
    /** Левый сайдбар **/
    <div class="col-lg-3">
      Здесь может быть левое меню, включаемая область или любой другой компонент.
    </div>
<?endif;?
В принципе, если таких страниц 2-3, то можно использовать решение для пункта 1. Только вместо index.php указывать название каталога, например.
<?if (CSite::InDir('/contacts/') && CSite::InDir('/page/')) :?>
   Здесь ваш код
<?endif;?>

Однако, советую использовать такие конструкции ТОЛЬКО в том случае, если страниц действительно 2-3, и вы точно это знаете. Иначе придется каждый раз при добавлении новой страницы с сайдбаром править код шаблона.

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


Разработчик - это в крови. Люблю Битрикс, нестандартные задачи и интересные проекты.


© 2023 Digital-агентство полного цикла "НастАртВЕБ"