Просмотров: 64206
Дата последнего изменения: 17.04.2025
Роберт Басыров
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
1
2
3
4
5
Недоступно в лицензиях:
Ограничений нет
Фактически, на сегодняшний момент свой компонент нужно писать лишь тогда, когда нужен абсолютно новый функционал для сайта. Если учесть тот факт, что состав стандартных компонентов довольно большой, то в большинстве случаев написание новых и не требуется. Достаточно расширить функционал уже имеющихся.
Тем не менее, приходит время, когда разработчик должен научиться создавать свои компоненты.
Типовая последовательность действий
В веб-проекте, при составлении ТЗ и проектировании, выявляют и описывают возможные виды собственных компонентов.
Определяется пространство имен собственных компонентов, например, с использованием названия проекта. Системные компоненты Bitrix Framework размещены в пространстве имен bitrix, компоненты проекта могут размещаться в пространстве имен, к примеру, citybank.
Внимание ! Названия создаваемых компонентов не должны пересекаться со стандартными.
Определяется, какой стандартный компонент можно взять за основу для создания собственного. В коде стандартных компонентов много примеров типичного и правильного использования API и техник программирования, поэтому рекомендуется брать их за основу.
К каждому компоненту продумывается интерфейс – какие параметры должны быть доступны администратору веб-сайта для редактирования. Например, для компонента, отображающего прогноз погоды, можно в настройки для администратора вынести свойство Адрес веб-сервиса и Таймаут соединения с веб-сервисом и т.п.
Определяется, в каком разделе дерева компонентов в визуальном редакторе необходимо разместить созданный компонент.
Компонент кодируется. Особое внимание уделяется настройке автокеширования компонента и профилированию его работы – он не выполняет запросы к базе данных в режиме кэширования, выполняет минимальное количество запросов к базе данных при устаревании кэша, хранит в кэше только необходимые данные, использует минимально возможный объем оперативной памяти (не сортирует массивы размером с десятки-сотни мегабайт и т.п).
Порядок создания
Выделить необходимый php-код в отдельный файл для того, чтобы использовать его потом в виде вызываемого файла несложно. Но компонент еще нужно подключить в систему с помощью файла описания, который опознается ядром Bitrix Framework. Без этого пользователь не увидит в визуальном редакторе иконку с названием компонента и сможет настраивать его свойства.
Напомним, что компонент – это выделенный в отдельный файл php-код с законченной функциональностью, файл регистрации компонента в системе и описания его параметров, а также файлы локализации.
Регистрация компонента
Выделение необходимого php-кода в отдельный файл.
Создание файла описания .description.php
Размещение файлов в папке в собственном пространстве имен.
Задание параметров в коде компонента
Локализация
Подготовка файлов с текстовыми константами для компонента и файла регистрации: /lang/ru/<имя_компонента>/component.php и /lang/ru/<имя_компонента>/.description.php
Внесение изменения в код обоих файлов компонента для использования этих констант (подключение файла локализации делается при помощи функции IncludeTemplateLangFile).
Важно! Все ключи в $MESS, содержащие название, описание и параметры компонента, а также идентификаторы веток компонента в дереве компонентов визуального редактора должны быть уникальными в рамках всего продукта.
При создании компонента для Marketplace нужно создавать мастер установки (аналогично модулю).
Совет от М. Месилова:
Если на сайте используются компоненты собственной разработки и требуется их большое обновление, то рекомендуется использовать в префиксе номер версии: news.list.v2 так вы не поломаете старые компоненты по всему сайту и у вас будет возможность сделать новый компонент с потерей обратной совместимости.
Созданные для веб-проекта собственные компоненты могут использоваться как основа для новых компонентов, а также, по причине модульной структуры и "отчуждаемости от проекта" - эффективно использоваться в других веб-решениях.
Примечание: При создании компонента рекомендуется использовать:
SEF режим
В комплексные компоненты встроена функция генерации ЧПУ. У этих компонентов всегда есть входной параметр SEF_MODE, который может принимать значения Y и N. Если параметр SEF_MODE равен N, то компонент работает с физическими ссылками и все параметры передает через стандартные параметры HTTP запроса.
буферизацию
Усовершенствованные методы буферизации в шаблоне позволяют более не использовать CBitrixComponentTemplate::EndViewTarget() ввиду того, что конец шаблона вызывает завершение буферизации автоматически.