Битрикс D7 – cоздание своего модуля


От слов к делу – начнём потихоньку заполнять пробелы в необходимых знаниях по Битрикс программированию …

На последнем моём собеседовании с веб студией Слон один из вопросов технического директора компании ко мне был – есть ли у Вас опыт по разработке модулей в Битриксе?
К сожалению тут я немного присел в лужу, т.к оного у меня не было.

Для освоения ядра D7 знакомство с модулями я начну стразу, собственно используя стиль программирования нового ядра.

Подход к всему новому у меня всегда один – от простого к сложному. Для начала я решил найти самый простой шаблон модуля, просто чтобы запустить своими руками без какой либо конкретной задачи – обозначить пространство для вставки полезного кода в шаблоне, так же освежил знания из курса Разработчик Bitrix Framework и вооружился официальной документацией по D7

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

Всё бы ничего, но видимо никто из компании не удосужился проверить работоспособность выложенного на гите модуля (и хорошо – хоть поковырялся, так сказать минизадача по правке работоспособности модуля).
Итак, прочитав статью, я сразу пошел по ссылке в гит, клонировал проект bitrix-d7-module и закинул его в ./local/modules/ файловой структуры сайта.

Далее интересней – идём в Доступные решения для установки модуля – там пусто!

Пора и заглянуть в код 🙂

В include.php

в параметрах registerAutoLoadClasses видим “Brainkit\\D7\\Test”
в файлах /lib/php.* пространство имён задано namespace Brainkit\D7;
да и в проверочном файле модуль подключается CModule::IncludeModule(“brainkit.d7”)

Переименовываем bitrix-d7-module в brainkit.d7 – появился модуль “Пример модуля D7 (brainkit.d7)” – то что нужно!
Устанавливаем и вызываем проверочный скрипт.

Табличка не существует!
Посмотрел базу в PHPMyAdmin – реально такой таблицы нет!
Изучаем папочку install, а точнее индексный файл этой папки

в методе InstallDB класса Brainkit_D7 запускается скрипт создания таблички, с абсолютным указанием места его расположения /bitrix/modules/brainkit.d7/install/db/install.sql
у нас то модуль лежит в /local/ !

Забавно, что в UNnstallDB в том же скрипте расположение MYSQL скрипта уже в local! /local/modules/brainkit.d7/install/db/install.sql
То есть даже если мы бы закинули модуль в /bitrix/modules/ – он бы установился, но удалить бы мы его не смогли (таблица всё равно осталась бы в базе).

добавим свойство класса
var $MODULE_PATH;
и в конструкторе определим его
$this->MODULE_PATH = dirname(__DIR__);
после чего правим в двух местах код заменяя $_SERVER[‘DOCUMENT_ROOT’] . “/local/modules/Brainkit.D7” на $this->MODULE_PATH
устанавливаем модуль заново, запускаем тестовый скрипт – ошибок нет, но и ничего не выдал!

Тут всё в рамках логики – в статьи и было написано, что в табличку нужно внести хоть одну строчку.
Вносим руками с помощью PHPMyAdmin или запросом с админки

Запускаем, и вуаля – результат на лицо, а точнее на экран!

Итак, первичное знакомство с созданием своих модулей закончено – шаблон рабочий, далее погружаемся в логику и идём от простого к сложному.

Ещё один шаг, который мне необходимо “пощупать” для удалённой работы в веб студиях – это система контроля версий.
Собственно, на этом простеньком примере можно и потренироваться – результаты отпишу.

PS
Brainkit особое спасибо за хорошую статью и возможность отладить кривой модуль 🙂
Для отладки модуля я использовал
Bitrix\Main\Diag\Debug::dumpToFile();
Дебаг в файл, по умолчанию пишет в /__bx_log.log

лучше с псевдонимом, чтобы покороче 🙂
use Bitrix\Main\Diag\Debug;
Debug::dumpToFile();

Ещё неплохой мануал по созданию своего модуля на примере кнопки “Наверх” (тут поглубже – уже используется страничка с настройками модуля, и функционал соответственно уже рабочий).
Но и тут не без “косяков” – модуль в мануале назвывается scrollup (без точки!) соответственно, он распознаётся как системный – поэтому я его в админке в установленных решениях сразу не нашел, т.к. он лежит в “модули” (как системный).

PPS
Пока разбирался с модулями (искал какой-нибудь маленький на МаркетПлейсе для анализа), нашел хороший бесплатный модуль “прокрутка вверх” с неплохим функционалом, который сразу и воткнул на сайт по фотообоям (можно затестить в онлайн режиме).

PPPS
Уфф, если я на каждое подобное изыскание буду пост писать, чувствую до вершин программирования я очень долго буду добираться – писанина время жрёт, ужас 🙁

Вот ещё, нашел отличный курс по созданию собственных модулей от Битрикс!


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *