Битрикс как подключить модуль

Пишем первый модуль для 1С-Битрикс с использованием ядра D7

Совсем недавно, а точнее несколько месяцев назад, моя деятельность переплелась с системой управления содержимым 1С-Битрикс. И хотя в начале я был не восторге, а многие вещи мне казались запутанными и местами нелогичными, но чем дольше я работал с 1С-Битрикс, тем больше убеждался, что 1С-Битрикс – это система, которая позволяет реализовать проект любого уровня сложности. Если после установки одной из редакций движка, возникает необходимость в дополнительной функциональности, её можно расширить при помощи платных или бесплатных модулей. Сегодня же я расскажу, как написать такой модуль самому.

Что же написать? Тут я решил не мудрить и залез на маркетплейс и наткнулся:

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

Структура модуля

Теперь рассмотрим папку install поподробнее:

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

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

Установка и удаление модуля Битрикс

Вот мы и приступили непосредственно к написанию кода. Первое, что стоит заполнить это файл version.php:

Указываем в массиве два параметра версию и время обновление модуля и переходим к описанию главного файла index.php:

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

Теперь нам нужно написать класс, в котором будет реализована установка и удаление модуля:

Имя класса должно соответствовать папке модуля и являться наследником от CModule, только вместо точки стоит прописать нижние подчеркивание, после чего в адмике мы увидим, что система определила наш модуль:

Двигаемся дальше и сообщим системе больше информации, о нашем модуле, указав основные свойства, делать это я буду в конструкторе класса:

Рассмотрев несколько примеров решений, я пришел к выводу, что конструктор лучше всего подходит для выполнения такого рода задач. В нем мы подключили наш файл version.php и заполнили основные свойства для нашего класса. Перед тем, как посмотреть результат этих действий, нам нужно заполнить соответствующий языковой файл:

Вернемся в админку и посмотрим, как теперь выглядит модуль:

Следующий метод, который мы напишем, реализует процесс установки:

Добавим ещё несколько переменных в языковой файл:

Опишем три метода, к которым мы обратились из установочного DoInstall():

READ  Как подключить магнитолу 12в на 24в

Копируем наши скрипты и стили в систему.

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

Регистрируем событие OnBeforeEndBufferContent. Перед тем, как страница будет отрисоваться, мы добавим свой HTML код, в котором сохраним настройки для нашей кнопки. Этот весь механизм далее напишем в файле Main.php.

С установкой мы закончили теперь опишем процесс удаления, заключаться он будет в нескольких методах:

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

Мы описали ещё одну языковую переменную, добавим её в соответствующий файл:

А теперь поговорим о методах:

Удаляем добавленные скрипты и стили из системы.

Удаляем из базы настройки нашего модуля.

И в последнем методе удаляем регистрационную запись обработчика события OnBeforeEndBufferContent. Чтобы увидеть результат нам осталось описать два файла step.php и unstep.php так и сделаем.

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

И посмотрим, что получилось:

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

Пишем страницу настроек для модуля Битрикс

Выше мы уже узнали, что страница настроек находится в файле options.php, сейчас он пуст и в административной части эта страница выглядит так:

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

Что теперь? Надо описать настройки модуля и поместить их в массив.

Через административную часть мы позволим пользователю изменять:

Для примера думаю, этих параметров хватит с головой, напишем массив настроек:

Нам осталось отрисовать форму, для этого создадим новый экземпляр класса CAdminTabControl, куда и передаём массив с настройками:

И обозначим конец отрисовки формы:

У нас появилось ещё две языковые переменные, добавим и их:

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

Как видите, получилось весьма годно, нам осталось только добавить код для сохранения настроек. Поместим его после массива с параметрами:

В обработчике мы также используем массив с параметрами для удобства сохранения, хотя это один из способов, в конце, конечно, нужно сделать редирект. Все настройки мы сохраняем при помощи статического метода set() у класса Option, который нужен именно для работы с настройками модуля. Вот мы и закончили со страницей настроек, теперь нам осталось подкинуть их в пользовательскую часть и обработать на стороне клиента.

Подключаем скрипты и стили кнопки, передаем настройки на страницу пользователя

Тут могут быть разные пути для решения этой задачи. В самом начале статьи, когда мы описывали код установки модуля, мы привязались к событию перед отрисовкой страницы и указали метод appendScriptsToPage() класса Main как обработчик. Теперь нам его нужно написать:

В методе мы определили, что он будет отрабатывать только на стороне клиента. Далее сформировали HTML код с набором настроек в json формате для удобства и добавили его в HEAD документа. В конце подключили скрипты и стили нашего Битрикс модуля кнопка наверх.

JavaScript и CSS кнопки наверх Битрикс модуля

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

Незабываем код упаковать и добавить в style.min.css. Для работы кнопки нам нужна библиотека jQuery, качаем её с официального сайта и также добавляем её в соответствующий файл. Теперь напишем JavaScript, который и будет добавлять кнопку с учетом настроек:

READ  Как подключить доменные службы active directory

В результате у нас получился такой код. Сам принцип написания кнопки я уже рассматривал в статье: Плавная кнопка прокрутки «Наверх», если вам интересен сам механизм. Осталось увидеть плоды нашей работы:

Перед тем, как смотреть, нужно удалить и заново установить модуль

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

Источник

Работа с главным модулем в Bitrix D7

В системе Bitrix главный модуль играет важную роль в работе всей системы, поэтому его так же называют ядром системы. Связано это с тем, что задействован он практически в каждом модуле и компоненте, и является неотъемлемой частью любого проекта. Главный модуль содержит методы для выполнения различных инициализаций и подключений данных в проекте, управления структурой формируемого документа, а также много других полезных функций.

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

Подключение модулей в D7

Как мы знаем из опыта, каждый модуль в системе Bitrix имеет свой символьный код. Посредством главного модуля мы можем подключать любой установленный модуль в системе:

Данный код подключает модуль с кодом iblock – модуль информационных блоков, после чего нам будут доступны методы, которые есть в этом модуле. Таким же образом подключаются и другие модули, к примеру, sale, catalog, и др.

Подключение языковых файлов в D7

Языковые файлы, как и во многих других движках используются для реализации мультиязычности проекта. Таким образом, языковой файл содержит переводы различных текстовых сообщений, которые могут быть актуальны для текущего языка сайта. Это бывает удобно при ведении проекта на множестве языков. Так к примеру, если мы хотим получить текст сообщения в компоненте, из языкового файла, мы можем обратиться к методу getMessage() в главном модуле:

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

Подключение CSS и JS в D7

Практический в каждом проекте возникает необходимость использования css-стилей либо js-файлов в шаблоне. Мы так же можем подключать необходимые файлы для фронтенда. При таком подходе мы можем складывать все файлы стилей и скриптов в одну папку, и подключать их в нужных участках кода посредством методов:

В этом примере два основных метода для подключения статики в заголовок документа:
addCss() – выполняет подключение файлов CSS-стилей;
addJs() – выполняет подключение JS-файлов. В качестве параметра передаётся путь к файлам, относительно корня сайта.

Получение параметров модулей в D7

В системе Bitrix каждый модуль может иметь некоторый набор параметров, которые используются для его работы. Эти параметры хранятся в отдельной таблице b_option. Мы так же можем получить значения этих параметров в других участках кода, обратившись к специальному методу главного модуля.

Методу мы передаём два параметра, первый – MODULE_ID, это символьный код модуля. Второй параметр — NAME, это код параметра, значение которого следует получить.

Создание Log-файла в D7

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

Вывод в файл можно произвести и аналогичным методом, который будет выведен с использованием функции print_r():

Запись времени выполнения в D7

Чтобы проверить скорость выполнения определённого участка кода, в системе Bitrix так же есть специальный метод, который позволяет разметить в нужные участки кода, и произвести тестовые замеры. Результаты времени выполнения можно будет вывести в файл, тем же методом dumpToFile():

READ  Как подключить пульт ростелеком к телевизору erisson

Методу startTimeLabel() в нашем примере передаются имя метки (label), которые так же попадут в файл с результатами. Это позволяет использовать подобные замеры на протяжении всего выполнения скрипта, передавая разные имена меток. При отладке кода может оказаться весьма полезной функцией.

Посредством главного модуля в движке D7 так же можно пользоваться механизмом кэширования данных. Это позволит сократить время выполнения ресурсоёмких участков кода в проекте, которые обновляются не так часто. Так же главный модуль выполняет работу с пользователями, пользовательскими полями, а так же группами пользователей. Далее рекомендую ознакомиться с примерами работы с пользователями и пользовательскими полями.

Источник

1С:Битрикс пример создания модуля D7

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

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

Всю теоретическую информацию о D7, вы можете найти в документации для разработчиков на сайте 1С:Битрикс. А на практике я опишу как использовать: namespace, ORM, автозагрузку классов.

Структура модуля

Для начала создадим основную структуру модуля, состоящую из следующих папок, файлов, структура модуля D7 аналогична обычному модулю:

далее по порядку разберём файлы модуля.

Файл /admin/menu.php

Данный файл создаёт пункты меню в административном интерфейсе 1С:Битрикс.

так как модуль без отдельной страницы, то ссылку укажем на таблицу модуля

Файл /install/db/install.sql

В данном файле напишем запрос на создание таблицы ‘brainkit_test’ помимо основных полей ID и TITLE, добавим поля SORT и CREATED, для сортировки и сохранения даты изменения записи в таблице соответственно:

Файл /install/db/uninstall.sql

А здесь sql запрос на удаление созданной базы:

Файл /install/index.php

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

В конструкторе класса указывается справочная информация о модуле: версия, дата обновления, имя и описание.

В методах класса должны обязатально присутствовать методы: DoInstall и DoUninstall, которые отрабатывают при установке и удалении модуля, а внутри них должны вызываться функции RegisterModule и UnRegisterModule для регистрации и удаления регистрации модуля в базе соответственно.

Внутри методов DoInstall/DoUninstall реализуем методы для: создания/удаления таблицы в базе, установки/удаления событий и дополнительных файлов модуля. Так как для нашего модуля не нужны события и дополнительные файлы, то эти методы просто оставим для будущего расширения возможностей модуля.

Исходный код файла:

Файл /lang/ru/lib/data.php

Файл /lib/test.php

В данном файле пристуствует namespace, который называется в соответвии будет храниться основная логика работы модуля, файл подключается в файле /include.php, для примера реализуем в данном файле получение одной записи из таблицы модуля с помощью ORM класса DataTable:

Файл /lib/data.php

Данный файл служит для организации доступа к таблице с помощью ORM, в нём создаётся класс DataTable, который наследуется от класса Entity\DataManager, который в свою очередь реализует парадигму ORM. Для того что бы подключить наш класс к ORM, мы должны указать имя таблицы и задать структуру, для этого есть 2 метода getTableName и getMap соответственно. Исходный код:

файл /include.php

Файл необходим для подключения классов или дополнительных файлов модуля. Если соблюдать соответствие namespace и имени модуля, то поддерживается автозагрузка класса. Автозагрузка работает, по инфомации от 1С:Битрикс медленнее, чем поключение файла в include.php. Для примера загрузим класс test.php без автозагрузки:

Запуск модуля

Для того что бы протестировать и запустить наш модуль мы должны:

Источник

Поделиться с друзьями
Как подключить и установить...
Adblock
detector