Студия дизайна — ключ к хорошему сайту
Перекрасить!
Учим основы, рассказываем тонкости

Включаемые области Битрикса — всё пучком

Включаемые области в Битрикс — пожалуй самый популярный инструмент при сборке структуры. По крайней мере, я не вспомню ни один проект, который обошёлся бы без единой включаемой области. Идеологически, они есть в любой системе управления сайтов, просто в Битриксе эту... сущность назвали «включаемая область».

Для чего нужны включаемые области.

Начнём с малого. В каждом сайте (в его структуре) есть области, которые повторяются от странички к страничке. Например: логотип в «шапке», копирайт и год в «подвале».

На изображении представлены примеры включаемых областей (обведены рамочками). Их суть в том, что они демонстрируются на каждой странице сайта, куда бы мы не зашли. Если создавать структуру сайта без системы управления сайтом (CMS), в каждом html-документе придётся повторять указанные блоки вручную. И при возникновении необходимости исправить ошибку или отредактировать текст, каждый файл придётся править вручную. CMS тем и характеризуется, что облегчает управление содержимым сайта.

Самое удобное решение для описанного примера — иметь для каждой очерченной на изображении области один источник данных, который бы «наследовался» на каждой странице. Выражаясь более технически: в корневой папке сайта должен находится файлик, который подключается при выводе определённой включаемой области. Например, это строка с названием сайта. Что происходит при открытии главной страницы? CMS начинает собирать html-страничку, доходит в шаблоне сайта до того места, где должен находится заголовок сайта. Там CMS встречает код, который говорит: сюда должен быть подключён файл «site_title». CMS проверяет — есть ли на диске такой файл. Если он есть, подключает его и идёт дальше. Если такого файла нет — просто пропускает операцию подключения включаемой области. Пользователь, просмотрев главную страницу, переходит по анонсу новости на её детальную страницу. Например, урл выглядит так: /news/detail.php?ID=333. CMS начинает собирать html-страницу, вновь доходит до того места, где должно быть название и проверяет, есть ли на диске сервера файл «site_title». Исходя из урла, который мы пытаемся открыть, сначала проверка на наличие файла «site_title» производится в папке /news/. Если его нет в этой папке, CMS поднимается на уровень выше (в корневую папку сайта) и ищет там. Там она находит нужный файл и подключает его. И так — для любого урла любой вложенности. Даже для таких, как например: /corporate/mission/developing/start/. Один единственный файл, находящийся в корневой папке обслуживает все урлы внутри. При создании нового раздела можно уже не переживать, что название сайта не будет отображаться. И редактировать удобно: изменения нужно внести в один единственный файл и они будут применены ко всем внутренним разделам.

Ситуация, которую мы рассмотрели — это описание действия «включаемой области для раздела» с активной рекурсией (если не нашли файл, смотрим в родительском разделе — и так до главной страницы). На практике — это самый распространённый случай использования включаемых областей. Использование «включаемой области для раздела» с отключенной рекурсией я практически не встречал. Если и встречается такой случай — это очень похоже на ситуацию, когда стоит использовать «включаемую область для файла». Итак, включаемые области в Битриксе делятся на:

  • включаемые области для раздела (рекурсия включена по умолчанию и отключается в настройках компонента);
  • включаемые области для файла (здесь рекурсия невозможна);
  • включаемый области для подключения файла (указывается конкретный файл, который подключается).

В качестве примера использования «включаемой области для файла» представьте ситуацию, когда в структуре сайта есть область или место (назовём его — Окошко), где при просмотре детальной странички новости необходимо выводить какой-то текст. Навскидку — ссылку для возврата к общему списку новостей. Сравним урлы:

  • /news/index.php — страница со списком новостей (index.php на практике не отображается, но тут, для сравнения, я указываю полный путь к файлу);
  • /news/detail.php — страница с детальным текстом новости.

Если мы настроим в Окошке отображение «включаемой области для раздела» и поместим туда ссылку на список новостей, она будет отображаться и для страницы с анонсами и для страницы с подробным текстом. Потому в данном случае мы используем «включаемую область для страницы» и настраиваем её на файл detail.php (указывается при самом создании включаемой области на странице). Для индексного файла раздела (index.php) она отображаться не будет.

Вернёмся к включаемым областям раздела с рекурсией и рассмотрим ту особенность, которая и сделала её такой популярной в использовании. Вспомним изображение, которое дано вначале текста и обратим внимание на области в структуре сайта, обведённые красным цветом. Содержимое данных областей должно меняться в зависимости от раздела, в котором мы находимся. Как это сделать?

Будем работать с главным заголовком страницы. Определим для него название файла на диске: «base_title». На главной странице сайта создаём область, с текстом: «Информационный портал Каменца-Подольского» и она начинает отображаться на всех внутренних страницах. Но нам нужно, чтобы для всех узловых разделов заголовок был другим. Рассмотрим реализацию данной задачи с помощью включаемой области. Ещё раз вспомним действие «включаемой области для раздела» с включенной рекурсией. Возьмём длинный урл:

corporate/mission/developing/start/

Как происходит поиск файла «base_title»? Сначала в разделе start, затем в его родительском разделе — developer, затем в mission, затем в corporate и наконец, в корневой папке сайта. Что означает такой порядок поиска? То, что найди CMS нужный файл в любом из перечисленных вложенных разделов, она бы подключила его и остановила поиск. А это означает, что если нам в разделе /corporate/mission/и во всех вложенных в него разделах нужен заголовок, который отличается от установленного для всех страниц сайта, мы в папке /corporate/mission/ создаём новую включаемую область (технически: файл base_title) и теперь он будет действовать внутри раздела /corporate/mission/.

На практике.

Выше мы рассмотрели технические нюансы подключения и действия включаемых областей. На программиста ложится задача по определению правильной тактики использования включаемой области. Для редактирования содержимого CMS предоставляет удобный инструментарий и менеджеры при управлении содержимым включаемой области уже не нуждаются в помощи программиста. Конечно, если речь идёт о простом содержимом включаемых областей — например, обычный текст.

Включаемая область может быть подключена в любом месте сайта — в шаблон, в другой включаемой области, в php-файл, при выполнении компонентов.

Код подключения включаемой области для раздела:

<?$APPLICATION->IncludeComponent( "bitrix:main.include", "",
Array(
"AREA_FILE_SHOW" => "sect",
"AREA_FILE_SUFFIX" => "base_title",
"AREA_FILE_RECURSIVE" => "Y",
"EDIT_TEMPLATE" => "include_area.php" ), false );
?>

Код подключения включаемой области для файла:

<?$APPLICATION->IncludeComponent( "bitrix:main.include", "",
Array(
"AREA_FILE_SHOW" => "page",
"AREA_FILE_SUFFIX" => "inc",
"EDIT_TEMPLATE" => "" ) );?>

Подключение включаемой области в визуальном редакторе производится через дерево компонентов, из группы «Служебные».

Создание включаемой области (не подключение на страницу, а именно — создание/наполнение) производится через публичный интерфейс. В активном режиме «Режим правки» активируются соответствующие инструменты. Если включаемая область пустая, мы видим квадратик с точкой.

При наведении на включаемую область, будет отображена панель инструментов по управлению данной включаемой областью.

Если на панели есть кнопка «Изменить область», значит включаемая область уже создана (вопрос только — в текущем разделе, или в одном из родительских). Если на панели есть и кнопка «Добавить», значит отображаемая включаемая область создана в одном из родительских разделов, а в текущем разделе её нет и при необходимости мы можем её создать.

Для тех, кто уверен в себе, каждая кнопка имеет несколько вариаций. Например, можно редактировать включаемую область в режиме PHP (по умолчанию — в визуальном редакторе).

Включаемые области являются мощным инструментом, который позволяет гибко управлять частями структуры, главное — научиться ими пользоваться и не бояться экспериментировать. Программирование и проектирование — это творчество. Один нюанс: в целях безопасности, нигде в публичной части нет кнопки «Удалить область». Это нужно делать вручную — через список файлов в административном разделе, либо через ФТП.