Понятие компонента

Компонент - специальная программная оболочка, позволяющая визуальными средствами системы вставлять и настраивать программный код в шаблон сайта или на его страницы. Компонент предназначен для вывода динамической информации из Базы данных сайта.

Компоненты являются блоками, с помощью которых строится публичная часть сайта. Они позволяют многократно использовать единожды написанный и отлаженный код в рамках одного сайта или на разных сайтах. Поставляемые с продуктом системные компоненты регулярно обновляются, при этом расширяется их функционал и исправляются возможные ошибки.

В ранних версиях «1C-Битрикс: Управление сайтом» встречаются компоненты 1.0. На данный момент используются компоненты версии 2.0.

Виды компонентов

Компоненты делятся на простые (одностраничные) и комплексные (многостраничные).

С точки зрения структуры и способов подключения простые и комплексные компоненты очень похожи. Но с точки зрения функционирования они сильно отличаются.

Простые (обычные, одностраничные) компоненты создают какую-либо область на одной странице. Их удобно использовать, когда на одной странице требуется разместить данные из различных модулей (блоги и инфоблоки, например) или данные из разных инфоблоков (новости и каталог товаров). Для создания полного раздела новостей или каталога товаров пользоваться ими довольно неудобно: приходится создавать большое число статических страниц и следить за тем, чтобы они были корректно связаны друг с другом.

Комплексные (сложные, многостраничные) компоненты создают разделы сайта. Например, компонент каталога создает на сайте весь раздел каталога: список каталогов, список групп и страницы товаров. То есть, комплексный компонент состоит из набора динамических страниц при просмотре сайта, но из одной статической страницы на физическом уровне. Комплексные компоненты строятся на основе простых компонентов, используя их логику.

Преимущество комплексных компонентов состоит в автоматической компоновке параметров одностраничных компонентов и отсутствии необходимости их связывать.

Комплексные компоненты разрешают следующие проблемы:

  • Отпадает необходимость создания большого числа статических страниц для размещения всех требуемых подкомпонентов. Отпадает необходимость отдельно настраивать для каждого из подкомпонентов общие (пересекающиеся) свойства (например, тип инфоблока и инфоблок).
  • Происходит установление сложных взаимосвязей между подкомпонентами. Например, нет необходимости для страницы со списком сообщений темы форума настраивать, как эта страница может указать на страницу списка тем форума, а как на страницу профиля посетителя.
  • В компонент (даже с кастомизированными шаблонами вывода) можно добавить новую страницу. Например, если на форуме появится страница (подкомпонент) по выводу 10 посетителей с самым высоким рейтингом, то эта страница станет доступной и в публичной части.
  • Можно сменить шаблон вывода всего комплексного компонента одним действием, а не настраивать вывод каждого из подкомпонентов.

Алгоритм работы комплексного компонента таков:

  1. на основании действий посетителя сайта (например, переход по пунктам меню) комплексный компонент определяет, какая страница должна быть показана пользователю, и подключает свой шаблон компонента для этой динамической страницы;
  2. шаблон страницы подключает обычные компоненты, автоматически настраивая необходимым образом их свойства;
  3. обычные компоненты выполняют свою работу: запрашивают данные у ядра системы, форматируют их и выводят посетителю, а также предоставляют пользователю различные элементы управления (ссылки, формы, кнопки и т.п.);
  4. пользователь с помощью каких-либо элементов управления, посылает новый запрос комплексному компоненту.
Примечание: Несколько комплексных компонентов размещать на одной физической странице нельзя.

Примечание: При добавлении статической информации на страницу с комплексным компонентом она появится на всех создаваемых им страницах. То же самое происходит при добавлении статической информации на одну из страниц в составе комплексного компонента (например, детальная страница товара) - она появится на всех аналогичных страницах.




61