152  /  328

Размещение компонента в системе и его подключение

Просмотров: 7656 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 16.06.2017

Компоненты в Bitrix Framework должны храниться только в определенных местах:

  • в папке /bitrix/components/bitrix (по умолчанию);
  • в папке /bitrix/components/собственное пространство имен.
  • в папке /local/components/ (рекомендуется для собственных компонентов сторонних разработчиков)

Все компоненты находятся в папке /bitrix/components/. Системные компоненты находятся в папке /bitrix/components/bitrix/. Содержимое этой папки обновляется системой обновлений и не может изменяться пользователями.

Внимание! Изменение содержимого папки системных компонентов /bitrix/components/bitrix/ может привести к непредсказуемым последствиям.

Пользовательские компоненты могут находиться в любых других подпапках папки /bitrix/components/ или прямо в папке /bitrix/components/, но рекомендуется папка /local/components/.

Именование

Название подпапки директории /bitrix/components/ образует пространство имен (namespace) компонентов. Например, все системные компоненты расположены в пространстве имен bitrix. При создании пользовательских компонентов рекомендуется создать какое-либо пространство имен и размещать пользовательские компоненты в нем.

Например, существует системный компонент news, который расположен в пространстве имен bitrix. Если необходим пользовательский компонент news, который имеет другую функциональность, не реализуемую с помощью шаблона системного компонента, то рекомендуется создать некоторое пространство имен (подпапку) в папке /bitrix/components/ (например, demo) и расположить пользовательский компонент news в этом пространстве имен. Таким образом будут доступны два компонента news, но лежащие в разных пространствах имен: bitrix:news и demo:news.

   

Имена компонентов имеют вид идентификатор1.идентификатор2.... Например, catalog, catalog.list, catalog.section.element и т.п. Рекомендуется строить имена иерархически, начиная с общего понятия и заканчивая конкретным назначением компонента. Например, компонент, показывающий список товаров данной группы, может называться catalog.section.elements. Полное имя компонента - это имя компонента с указанием простанства имен. Полное имя имеет вид пространство_имен:имя_компонента. Например, bitrix:catalog.list. Если компонент лежит вне пространства имен, то пространство имен не указывается. Например, catalog.section.

Подключение компонента

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

<?$APPLICATION->IncludeComponent(
componentName, // имя компонента
componentTemplate, // шаблон компонента, пустая строка если шаблон по умолчанию
arParams=array(), // параметры
parentComponent=null,
arFunctionParams=array()
);?>

Внутри компонента (файл component.php) доступны следующие предопределенные переменные:

$componentName – полное название компонента (например: bitrix:news.list).
$componentTemplate – шаблон, с которым вызывается компонент.
$arParams – входные параметры компонента (т.е. параметры с которыми вызывается компонент). Параметры доступны так же по их именам.
$componentPath – путь к компоненту относительно корня сайта (пример: /bitrix/components/bitrix/news.list).
$parentComponentName – название родительского компонента (пустое, если нет родителя).
$parentComponentPath – путь к родительскому компоненту относительно корня сайта (пустой, если нет родителя).
$parentComponentTemplate – шаблон родительского компонента (пустой, если нет родителя).
$arResult — результат, чтение/изменение. Затрагивает одноименный член класса компонента.
$this — естественно ссылка на текущий вызванный компонент (объект класса CBitrixComponent), можно использовать все методы класса.
Кроме того, в компоненте объявлены глобальными переменные $APPLICATION, $USER, $DB.

Примечание: Компонент получает все параметры вызова следующим образом:
  1. В ключах, начинающихся с ~, данные содержатся в исходном виде (т.е. без всякой обработки).
    Если это комплексный компонент или в шаблоне компонента вызывается другой и часть параметров передается ему, то необходимо передавать значение ключей с ~.
  2. В ключах без ~ данные приведены к безопасному виду с помощью метода htmlspecialcharsEx. Если ключ содержит массив, то будут обработаны строковые ключи массива (тоже с помощью htmlspecialcharsEx).

36
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии