Компонент это программный код 1с битрикс
В системе Bitrix заложена довольно популярная архитектура: разделения данных, представления и обработки действий пользователя на три отдельных компонента.
Данная архитектура именуется как MVC (Model-view-controller, «Модель-представление-поведение»), и широко применяется для проектирования различных программных продуктов.
В свою очередь шаблон MVC для Bitrix Framework формируется из следующих частей:
Модель — это API;
Представление — это шаблоны;
Контроллер — это компонент;
В данной статье мы поговорим о компоненте Bitrix.
Компонент — это контроллер и представление для использования в публичном разделе. Компонент с помощью API одного или нескольких модулей манипулирует данными. Шаблон компонента (представление) выводит данные на страницу.
Далее от теории к практике. Рассмотрим структуру простого компонента Bitrix.
Структура компонента
Стандартные компоненты Bitrix хранятся в каталоге /bitrix/components/bitrix/. Как утверждают разработчики: компоненты находящиеся в данном каталоге могут перезаписываться при обновлении, и для кастомизации компонентов предпочтительно заводить отдельный каталог для своих компонентов.
В связи с этим в каталоге /bitrix/components/ заводим новый каталог, в котором будут храниться наши компоненты.
Дадим ему имя custom. Теперь создадим каталог для нашего компонента /bitrix/components/custom/sections.list/. Привычная структура папок и файлов простого компонента выглядит так:
— help
— images
— lang
— templates
.description.php
.parameters.php
component.php
Рассмотрим всё это по порядку.
В папке help обычно лежит файл .tooltips.php, содержащий массив всплывающих подсказок для настроек компонента. Не будем на нём останавливаться, пример этого файла можно посмотреть в других компонентах.
В папке images обычно лежит иконка компонента.
В папке lang лежат подпапки для языковых параметров компонента.
В папке templates — все шаблоны компонента.
Можно сразу сделать шаблон по умолчанию для нашего компонета. Полный путь до него будет выглядеть так: /bitrix/components/custom/sections.list/templates/.default/template.php.
Вставим туда пока одну единственную строчку «Это шаблон компонента custom:sections.list».
В файл .description.php прописываем следующий код:
Итак, файл содержит массив с описанием компонента.
Далее следует файл — .parameters.php:
Рассмотрим содержимое файла более подробно. Ключ PARAMETERS массива $arComponentParameters представляет собой массив с описанием параметров. Наш компонент будет содержать только один основной параметр — IBLOCK_ID (ID инфоблока, из которого будут показываться разделы).
Ключи:
NAME — название параметра;
TYPE – тип;
MULTIPLE — множественность (если ‘Y’, то наш параметр сможет принимать массив значений);
PARENT — родитель (параметры можно делить на группы);
Обратите внимание на второй параметр CACHE_TIME — он по умолчанию для компонентов Bitrix и устанавливает время кеширования.
Из массива $arComponentParameters будет сгенерирован массив $arParams, который будет использоваться в основном файле нашего компонента — component.php
Содержимое файла component.php:
Файл component.php содержит всю логику компонента, основная задача этого файла — сформировать из полученных параметров ($arParams) массив $arResult, который впоследствии будет передан в шаблон компонента. Обратите внимание на два комментария. Раскомментировав их, вы всегда сможете наблюдать за тем, какие параметры приходят в компонент, и какой результат получает шаблон.
Код созданного нами компонента не сложен — в зависимости от полученого параметра (ID инфоблока) мы делаем выборку разделов и сохраняем их в массив $arResult. Следует обратить внимание на вызов метода $this->StartResultCache(). Он проверяет, есть ли у нашего компонента актуальный кеш. Если он есть, то выводится информация из кеша. Следовательно, запроса к базе нету, массив $arResult не генерируется, и даже шаблон не подлючается (метод $this->IncludeComponentTemplate()).
Шаблон компонента
Следующий шаг — создание шаблона для компонента. Шаблон принимает массив $arResult, сгенерированный в файле component.php и выводит его содержимое в браузер. Файл шаблона нашего компонента будет находиться по следующему пути: /bitrix/components/custom/sections.list/templates/.default/template.php
Код в шаблоне компонента:
Вызов компонента
После создания компонента его необходимо вызвать в нужном участке кода на сайте. Для этого создадим в корне сайта файл test.php, и пропишем в него следующий код:
Для параметра IBLOCK_ID необходимо указать ID инфоблока, содержащего разделы. Записав параметры в файле, следует запросить скрипт посредством браузера, и просмотреть результат./strong
Цитатник веб-разработчиков В тексте курса вы встретите цитаты, высказанные в разное время разработчиками системы и разработчиками проектов на базе Bitrix Framework. Надеемся, что такие неформальные замечания внесут некоторое разнообразие в процесс изучения. Заодно опытные специалисты поделятся и своим опытом.
Имена авторов цитат даются в том написании, в каком авторы зарегистрировали себя на сайте "1С-Битрикс". .
Курс для разработчиков - продолжение линейки учебных курсов по Bitrix Framework. Получение сертификата по курсу рекомендуется после успешной сдачи тестов по всей линейке курсов, так как без понятия о работе Контент-менеджера и Администратора создание успешных сайтов будет затруднено.
Чтобы научиться программировать в Bitrix Framework, нет необходимости изучать всю линейку курсов. Но есть моменты, которые необходимо знать разработчикам о системе, они раскрыты в начальных курсах:
- Интерфейс программы - в главе Элементы управления курса Контент-менеджер.
- Компоненты 2.0 (начальные сведения) в главе Компоненты 2.0 (начальные сведения) курса Контент-менеджер.
- Информационные блоки - в главе Информационные блоки (начальные сведения) курса Контент-менеджер.
- Управление доступом к файлам, элементам контента, модулям и другие права доступа в главе Управление доступом курса Администратор. Базовый.
- Работа с инструментами системы - в главе Работа с инструментами курса Администратор. Базовый.
- Модуль Поиск - в главе Поиск курса Администратор. Базовый.
- Вся информация по администрированию модулей размещена в курсах:
-
- модули "1С-Битрикс: Управление сайтом" - модули "1С-Битрикс: Управление сайтом", связанные с коммерческой деятельностью в Интернете. - модули "1С-Битрикс: Корпоративный портал"
Как построен курс
Общепринятая градация квалификации разработчиков в рамках курса обозначает что:
- Junior сможет создавать простые сайты работая со штатными компонентами и модифицируя их шаблоны.
- Middle разработчик может работать с API Bitrix Framework.
- Senior умеет работать над производительностью и безопасностью сайтов, создавать свои модули и компоненты.
Примечание: Такое построение удобно для пошагового изучения принципов работы Bitrix Framework. По этому же принципу построены и тесты. Но такая структура не очень удобна для использования содержания курса как постоянного источника информации. Что бы переключить курс в режим Справочника, воспользуйтесь переключателем в верхнем правом углу шапки курса.
Начальные требования к подготовке
Для успешного изучения курса и овладения мастерством разработки сайтов на Bitrix Framework необходимо владеть (хотя бы на начальном уровне):
- основами PHP, баз данных;
- основами HTML, CSS.
У нас часто спрашивают, сколько нужно заплатить
Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов - ничего из этого оплачивать не нужно.
Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Баллы опыта
В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:
уроке.
Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.
Тесты
После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче последовательности тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.
Комментарии к статьям
Что дальше?
Одновременно с изучением курса Разработчик Bitrix Framework вам придётся обращаться к информации о других технологиях Bitrix Framework. Эта информация размещена в следующих курсах:
Для преподавания офлайн
Если данный курс берётся в качестве основы для офлайнового преподавания, то рекомендуемая продолжительность: 5 дней (40 академических часов).
Если нет интернета
iPhone:
FBReader
CoolReader
iBook
Bookmate
Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome
iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса. Версия файла - от 10.03.2022.
Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
В этой статье предпринята попытка пошагово описать процесс создания простого компонента для 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 и именно он отрабатывает, если приподключении компонента оставить имя шаблона пустым.
В нашем примере просто выведем дамп массива входных параметров и массива результатов работы компонента.
В данном уроке рассмотрим, где компоненты размещаются внутри 1С-битрикс.
Фактически компоненты можно разделить на два вида - это системные и пользовательские компоненты. Каждый из видов размещаются в своей директории.
Системные компоненты расположены в директории /bitrix/components/bitrix/ . Cодержимое этой папки изменять нельзя. Здесь находятся файлы, которые обновляются разработчиками, а внесенные изменения в них будут стерты. Проект может быть и снят с поддержки, в таком случае усложняется в целом его обновления.
В тоже время все пользовательские компоненты могут лежать прям в этой же паке components или для системного хранения под них можно создать отдельную директорию, которая в терминологии битрикс называться « Пространством имен компонентов ».
/bitrix/components/имя_компонента/
или в папке с нашим пространством имен
/bitrix/components/наше_пространство_имен/имя_компонента/
Разработчики битрикс рекомендуют создавать отдельную папку в дереве сайта с названием local. В этой папке, как в директории bitrix, нужно разместить папку под компоненты " components" . В папку components мы копируем системные компоненты или же создаем в ней свои. Такая папка local имеет приоритет перед папкой Битрикс, и все ее компоненты загружаются в первую очередь. Как работать в данной директории я покажу в одном из уроков на практическом примере.
Для общего понимания, давайте скопируем системный компонент в свое пространство имен.
Наименование компонентов
Теперь мы знаем, что в папке bitrix располагаются системные компоненты, названием ее является пространством имен. Это же пространство имен мы видим в компоненте, когда открываем его на редактирование, или в режиме кода. Если компонент находится в нашем пространстве имен, то в режиме кода мы увидим в место bitrix название папки, в которой он расположен.
За пространством имен идет двоеточие, и далее за ним располагается имя компонента, которое может состоять из нескольких слов, разделеных точкой.
Сами имена компонентов имеют следующий вид, идентификатор1.идентификатор2… Например, news, news.list, news.detail и т.д. Имена рекомендуется строить иерархически с общего понятия и заканчивать конкретным названием компонента.
Вообще считается полное имя компонента – это имя компонента с указыванием пространства имен. Оно имеет вид: пространство_имен:имя_компонента. Например, bitrix:news.list или bitrix:news - это все имена компонентов. Если компонент лежит не в пространстве имен, то пространство имен не указывается, а пишется просто: имя_компонента.
Подключение компонента
Компонент подключается на странице при помощи кода вызова. Написать код можно как вручную, так и вставить его через визуальный редактор. В редакторе компоненты располагаются справой стороны. Выбираем тот, который нам нужен и простым перетаскиванием размещаем его в область формы.
Если включить режим кода, мы увидим, как он вызывается.
Каждый компонент подключается при помощи функции IncludeComponent() , объекта $APPLICATION , в который передаются параметры его настроек.
Первый параметр - это название компонента, которое с вами разбирали " bitrix:news.list ". Видим, что оно состоит из двух частей: bitrix: пространство имен компонента и его название news.list .
Второй параметр - это наименование шаблона. Если пустые кавычки, тогда устанавливается шаблон по умолчанию, с именем .default , если установлен шаблон в настройках, тогда увидим в кавычках его наименование.
Третий параметр - это массив входящих параметров, который используется в работе компонента.
Боле подробно с параметрами мы познакомимся в отдельном уроке, где на практике соберем их самостоятельно.
Запомните главную вещь: любой из компонентов состоит из обязательного набора папок и файлов. Разницы не имеет, какой бы вы из них рассматриваете структура их будет едина. То есть, что компонент Google Maps, что фотогалерея, компонент "каталог" - у них одна структура. Отличие сможете найти только между простым и комплексным компонентами. Это означает то, что не нужно изучать громаду документации. На самом деле все достаточно просто устроено! Вам нужно только понять, как это все работает, и сможете реализовать любую идею, которая у вас появится.
Детально с каждым из видов компонентов я познакомлю в отдельном уроке, там же разберем их отличия и файловую структуру.
В четвертом уроке я показывал как внедрить HTML верстку в 1С-Битрикс , подключали картинки, счетчик, стили, перенесли все файлы верстки и теперь у нас сайт загружается из данной CMS.
Возникает следующий вопрос. Что делать дальше?
Можно оставить в таком виде, но в этом случае не будут работать формы подписки. Вся информация на странице статическая и для того что бы изменить какие ни будь данные на ней, мы будем вынуждены постоянно залазить в код шаблона и все это правки вносить вручную.
Хорошо если вы в этом разбираетесь, но если делаете сайт на заказ, то заказчика это не устроит. Он захочет сам, изменять элементы в шаблоне, допустим поменять текстовое содержание заголовков, изменить информацию о сотрудниках и т.д.. В любом случае постоянно к вам он обращаться, не намерен, он захочет эти правки вносить сам.
Так вот, следующий этап, с которым вы должны определиться, какими элементами на странице хотите управлять через функционал 1С-битрикс. То есть, какие элементы оставить статические, какие сделать динамические и все это нужно связать с CMS системой.
Каким образом делать эту связку?
Конечно при помощи компонентов. Не в коем случае нельзя писать прямые запросы к базе данных на самой странице, при помощи АПИ доставать эти данные из инфоблоков. Все это делается только при помощи компонентов.
Кто не знает что такое компоненты! Почитайте документацию Битрикс .
Да, там много информации, вам понадобится время, что бы это все прочитать, осмыслить, отработать и если оно у вас есть, то дерзайте грызть этот гранит 1С Битрикс. У кого времени нет, для тех есть мой платный курс «Программирование: Новый взгляд на 1С-Битрикс» который поможет вам уложить данную информацию за 4 часа.
Откройте мой первый урок из данного курса который в открытом доступе и вы из него поймете, какую суть играют компоненты в данной CMS.
Разработка компонента (ПЛАН действий)
Начинаем мы как всегда с самого верха, с шапки сайта. Да и вообще обратите внимание, что сам сайт разбит как бы на блоки, и можно предположить из этого, что каждый блок это и будет отдельный компонент.
Приступаем к разработке первого компонента для шапки сайта. Я рекомендую составлять предварительно план, некую такую блок схему. В которой описываете очередность шагов, какие нужно сделать.
- - Определяемся, какими элементами мы хотим управлять в шапке;
- - Описываем параметры настроек компонента;
- - Описываем логику компонента;
- - Выводим динамическую информацию в шаблоне компонента.
1 - Определяемся какими элементами хотим управлять
Начинаем с первого пункта и давайте определимся, какими элементами в шапке сайта хотим управлять при помощи компонента.
- Начинаем с фоновой картинки. Хотим ее изменять! Я думаю что да;
- Логотип. Сделаем возможность менять его в компоненте;
- Заголовки;
- Счетчик;
- Форма подписки с заголовком;
- Блок с социальными иконками.
Всеми этими элементами мы хотим управлять через компонент.
Следующий вопрос, который вы должны задать себе. Где сохранять информацию? Будет ли это настройки параметров компонента или отдельный инфоблок, это мы сейчас с вами разберем.
Давайте мыслить логически. В шапке одна картинка, если было бы несколько однотипных изображений или слайдер, то инфоблок нам бы пригодился, а так как картинка одна, то разместить ее можно в структуре сайта, а через настройки компонента выводить ее путь, где она расположена.
Для логотипа, заголовков и счетчика, инфоблоки нам не нужны все это можно сохранять в настройках компонента. Конечно, можно создать инфоблок под один элемент "шапки", все это запихать в него, но сразу подумайте, а зачем вам это нужно! Зачем вам нужны лишние запросы к Базе Данных?
По поводу формы подписки. Под нее можно сделать отдельную группу для пользователей, и в дальнейшем сохранять туда юзеров желающих получать уведомления.
С блоком с социальных иконок тут нужно подумать. Наверняка заказчик захочет задавать не только ссылками, но и менять сами иконки. Тут так же все можно реализовать через параметры настроек компонента, а как это делать вы узнаете далее.
Переносим шаблон в папку local
Прежде чем, что-то разрабатывать, давайте весь наш код отделит от ядра 1С Битрикс. Для этого создадим отдельную директорию local , куда перенесем текущий шаблон. В дальнейшем все разработки будем делать в ней.
Для этого перехожу в административную часть, Структура сайта -> файлы и папки . В ней создаем отдельную директорию local , индексную страницу не добавляем. Внутри создаем папку templates , и папку под текущий шаблон lendtv .
Для чего это все делаю, для того что бы отделить весь наш код от ядра битрикс. Так как если сейчас посмотрим, то текущий шаблон теперь будет загружаться из папки local, а так как эта папка пустая, мы видим белую страницу. По этому, переходим в директорию с шаблонами bitrix и копируем все файлы текущего шаблона lendtv в созданную нами директорию.
Теперь все оформление будет подгружаться из нее, и все разработки мы в дальнейшем будем делать в ней.
Так как мы планируем писать свои компоненты, то в директории local под них создаем папку components. Внутри ее делаем отдельную папку под наше пространство имен dws . В ней создаем папку под компонент который назовем home.page (главная страница).
На это пока все, в следующем уроке опишем компонент что бы он появился в виртуальном дереве редактора.
Читайте также: