Дата последнего изменения: 25.07.2023
Компоненты в Bitrix Framework должны храниться только в определенных местах:
/bitrix/components/bitrix
(по умолчанию);/bitrix/components/собственное пространство имен
./local/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, // 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.