Производство фотообоев в Новосибирске. Интернет магазин фотообоев. Изготовление - один день! Каталог 10 000 изображений!
6 Апрель 2021

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

posted in Bitrix |

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

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

Для освоения ядра 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
Уфф, если я на каждое подобное изыскание буду пост писать, чувствую до вершин программирования я очень долго буду добираться — писанина время жрёт, ужас 🙁

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

Оставить комментарий