Bitrix

Разработка комплексных компонентов

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

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

Как же создать комплексный компонент?

  1. Для начала нужно сделать 2 простых компонента, которые нужно связать. Пусть это будет компоненты dv:elem.list и dv:elem.detail .
  2. Затем нужно создать папку для комплексного компонента dv:elems например. Там обязательно должен быть файл component.php, в котором необходимо запрограммировать вызов по условиям компонентов. Условия могут быть самые разные, самое главное, чтобы в конце было подключение шаблона по условию примерно так: $this->IncludeComponentTemplate($componentPage); , в переменной $componentPage должно быть название файла без .php , лежащего в папке templates/.default/ комплексного компонента. В этом файле соответственно и происходит  загрузка нужного простого компонента.
  3. Нужно создать файлы, в которых происходит загрузка простых компонентов.Их должно быть столько же, сколько должно быть различно скомпонованных страниц, которые будет выдавать наш комплексный компонент. Например, вот так будет выглядеть файл загрузки dv:elem.list :
    <?
    if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
    
    $APPLICATION->IncludeComponent("dv:elem.list", "", $arParams, $component);
    ?>
  4. В подпапке templates/.default/dv/elem.list/.default/ будет располагаться шаблон первого простого компонента. И соответственно в подпапке templates/.default/dv/elem.detail/.default/ — шаблон второго простого компонента. Т.е. комплексный компонент подключает компоненты как простые компоненты, но при этом шаблоны для них берет из своего шаблона.
Надеюсь, мне удалось вкратце описать принципы работы комплексных компонентов 1С-Битрикс. Если у вас есть вопросы — я на них с удовольствием отвечу, как в комментариях к статье, так и через форму обратной связи.

Отставить комментарий

Ваш электронный адрес не будет опубликован.Обязательные для заполнения поля отмечены *

один + 20 =