Компонент это программный код 1с битрикс

Обновлено: 07.07.2024

В этой статье предпринята попытка пошагово описать процесс создания простого компонента для 1С Битрикс с минимальным использованием функционала старого ядра и максимально близко к принципам написания кода на D7.

Репозиторий примера можно посмотреть тут

Размещение компонента в файловой структуре сайта

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

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

Не путайте термин “пространства имен” в рамках Битрикса и пространства имен PHP этот термин остался в Битриксе исторически и нам придется с этим мириться.

Так же компоненты можно разместить в каталоге /local/components в этой папке нужно так же создать свое “пространство имен” в виде отдельного каталога в котором и разместить свой компонент.

Для размежения локальных компонентов, которые пишутся под конкретный проект, а так же для кастомизации стандартных компонентов Битрикса нужно использовать именно папку /local/components

Для нашего примера будем использовать папку ‘example’ в качестве “пространства имен”, а назовем компонент compsimple таким образом итоговый путь к файлам разрабатываемого компонента будет таким: /local/components/example/compsimple .

Структура файлов и папок компонента

Основной файл компонента к которому происходит обращение при подключении компонента на странице и в котором находится точка входа в логику работы компонента class.php .

Следующий по важности файл .description.php он содержит описание компонента и путь для его отображения в интерфейсе системы.

Принято выносить языкозависимые тексты в языковые файлы поэтому нам нужна папка lang в которой будут находиться папки с кодами языков, в нашем случае только ru в ней должен быть еще один файл .description.php , а он уже содержит массив с переводами текстов.

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

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

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

Итоговая структура файлов и папок используемых в примере выглядит так:

class.php

В файле class.php должен располагаться класс компонента унаследованный от CBitrixComponent .

Принцыпы именования класса компонента нигде не регламинтированы, но рекомендуется давать имя классу максимально похожее на путь к компоненту. Наш класс будет называться ExampleCompSimple .

Пример содержимого нашего файла:

.description.php

В принципах описания компонента ничего не меняется почи с времен появления БУС. Тут относительно подробное описание структуры файла.

Рассмотрим пару примеров размещения компонента в визуальном редакторе:

  • Разместить компонент в ветке на ровне с остальными основными ветками

Результат:

Разместить компонент в ветке на ровне с остальными основными ветками

Результат:

Разместить компонент в дочернюю ветку

Пример файла языковых констант lang/ru/.description.php :

.parameters.php

Для отображения полей для передачи параметров в форме настроек компонента предназначен файл .parameters.php. Он содержит в себе массив с определением типа и значений входных параметров компонента.

Языковой файл lang/ru/.parameters.php

Шаблон компонента

Компонент может содержать множество шаблонов. Шаблон по умолчанию находится в папке .default и именно он отрабатывает, если приподключении компонента оставить имя шаблона пустым.

В нашем примере просто выведем дамп массива входных параметров и массива результатов работы компонента.

(УРОК - 3) Файловая структура простого компонента

В данном уроке рассмотрим, где компоненты размещаются внутри 1С-битрикс.

Фактически компоненты можно разделить на два вида - это системные и пользовательские компоненты. Каждый из видов размещаются в своей директории.

Системные компоненты расположены в директории /bitrix/components/bitrix/ . Cодержимое этой папки изменять нельзя. Здесь находятся файлы, которые обновляются разработчиками, а внесенные изменения в них будут стерты. Проект может быть и снят с поддержки, в таком случае усложняется в целом его обновления.

Пространство имен системных компонентов

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

/bitrix/components/имя_компонента/
или в папке с нашим пространством имен
/bitrix/components/наше_пространство_имен/имя_компонента/

Разработчики битрикс рекомендуют создавать отдельную папку в дереве сайта с названием local. В этой папке, как в директории bitrix, нужно разместить папку под компоненты " components" . В папку components мы копируем системные компоненты или же создаем в ней свои. Такая папка local имеет приоритет перед папкой Битрикс, и все ее компоненты загружаются в первую очередь. Как работать в данной директории я покажу в одном из уроков на практическом примере.

Папка local в системе 1С-Битрикс

Для общего понимания, давайте скопируем системный компонент в свое пространство имен.

Наименование компонентов

Теперь мы знаем, что в папке bitrix располагаются системные компоненты, названием ее является пространством имен. Это же пространство имен мы видим в компоненте, когда открываем его на редактирование, или в режиме кода. Если компонент находится в нашем пространстве имен, то в режиме кода мы увидим в место bitrix название папки, в которой он расположен.

За пространством имен идет двоеточие, и далее за ним располагается имя компонента, которое может состоять из нескольких слов, разделеных точкой.

Сами имена компонентов имеют следующий вид, идентификатор1.идентификатор2… Например, news, news.list, news.detail и т.д. Имена рекомендуется строить иерархически с общего понятия и заканчивать конкретным названием компонента.

Пространство имен компонентов 1С-Битрикс

Вообще считается полное имя компонента – это имя компонента с указыванием пространства имен. Оно имеет вид: пространство_имен:имя_компонента. Например, bitrix:news.list или bitrix:news - это все имена компонентов. Если компонент лежит не в пространстве имен, то пространство имен не указывается, а пишется просто: имя_компонента.

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

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

Если включить режим кода, мы увидим, как он вызывается.

Каждый компонент подключается при помощи функции IncludeComponent() , объекта $APPLICATION , в который передаются параметры его настроек.

Вызов компоненты

Первый параметр - это название компонента, которое с вами разбирали " bitrix:news.list ". Видим, что оно состоит из двух частей: bitrix: пространство имен компонента и его название news.list .

Второй параметр - это наименование шаблона. Если пустые кавычки, тогда устанавливается шаблон по умолчанию, с именем .default , если установлен шаблон в настройках, тогда увидим в кавычках его наименование.

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

Боле подробно с параметрами мы познакомимся в отдельном уроке, где на практике соберем их самостоятельно.

Запомните главную вещь: любой из компонентов состоит из обязательного набора папок и файлов. Разницы не имеет, какой бы вы из них рассматриваете структура их будет едина. То есть, что компонент Google Maps, что фотогалерея, компонент "каталог" - у них одна структура. Отличие сможете найти только между простым и комплексным компонентами. Это означает то, что не нужно изучать громаду документации. На самом деле все достаточно просто устроено! Вам нужно только понять, как это все работает, и сможете реализовать любую идею, которая у вас появится.

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

Читайте также: