Первый плагин/модуль для админки joomla 4, свежие впечатления, субъективное мнение
После первого плагина на вордпресс решили написать такой же плагин для joomla, вроде как вторая по популярности система.
Мы продолжаем гнуть свою идею — предоставить пользователю сайта возможность управлять оборудованием, подключенным локально к его компьютеру.
Тема в общем-то новая, требует на ПК пользователя вторую программу сервер, которая может уже напрямую общаться с оборудованием, подключенным к ПК.
Общение плагина joomla с сервером стандартно через http post json запросы на localhost к серверу.
Что в результате происходит
По сути к вашей облачной программе добавляются возможности обычной товароучетки.
Когда эти возможности могут быть полезны.
Есть например необходимость в админке принимать оплату по заказу наличными или по карте. Для этого требуется использовать у продавца кассовый аппарат и/или банковский терминал.
Теперь о joomla
Скачали joomla 4.4.8 наугад, чтобы не самую последнюю и не старую.
Первое ощущение, что разработчики не парятся с документацией. Русскоязычный форум есть, помогают, но все равно складывается впечатление, что joomla это для тех, кто не ищет помощь на стороне, а предпочитает изучать код php так сказать вживую изнутри (отладчиком имеется ввиду).
Нужен магазин
Итак нам нужен так называемый компонент типа магазин, где реализован механизм заказов. В joomla таких магазинов несколько JoomShopping, VirtureMart, вроде joomKassa и возможно ещё есть несколько. Это отличает джумлу от вордпресс, где только один WooCommerce.
Выбираем первое, что попалось под руку это JoomShopping.
Модуль, компонент, плагин, аддон, контейнер, расширение,…
Первое, что пришлось понять, это то, что магазин JoomShopping, как и любой магазин в joomle, это компонента и код этой компоненты (приложения) нам править нельзя, так как мы хотим сделать универсальное расширение, которое будет работать на всех сайтах после установки без доработок самого магазина.
Второе, что пришлось понять, это то, что только события, испускаемые из JoomShopping смогут нам помочь, а конкретно те события, которые передают содержание заказа, чтобы мы смогли напечатать чек например.
Третье, что пришлось понять, это то, что только плагин может подписаться на события. А значит нам по любому нужен плагин.
Четвертое, что пришлось понять, это то, что плагин должен загружаться раньше, чем страница магазина открывает заказ, чтобы плагин смог получить событие от магазина.
И тут получается, что похоже нам нужен системный плагин, то есть плагин, у которого в манифесте group=«system».
Модуль
Пятое, что пришлось понять это то, что похоже только модуль может отобразить в окне содержание нашего функционала.
Допустим надо в модуле отобразить пару кнопок и пару лэйблов, то есть небольшой по содержанию.
Модуль выводится в позицию, которую указывает пользователь админки, у нас например выводим в top, чтобы всегда сверху на экране отображался.
При этом заказ магазина визуально будет сразу под нашим модулем.
Шестое, что пришлось понять то, что плагин, получая содержание заказа в событии, должен у себя (в переменной класса) сохранить заказ, чтобы потом модуль, когда его начнут подгружать в систему смог забрать состав заказа из плагина и сформировать интерфейс для управления оборудованием.
Я могу ошибаться и скорее всего точно где-то ошибаюсь и есть более простой способ, но у нас заработало пока только в таком варианте.
То есть в результате есть модуль и системный плагин.
Примечание: надо отметить, что joomla работает пошустрее чем вордпресс в той же ОС и в том же железе на локалхост.
addScript
Странный нюанс в админке наблюдается при добавлении своего js или css файла через вызов addScript, а именно addScript добавляет в начале пути к файлу /administrator/…, что точно не приведет к месту хранения media ресурсов, таких как js и css.
Приходится предварять путь к файлу js переходом на более верхний уровень каталога, то есть добавлять вначале пути …/ .
Не знаю можно ли здесь выложить видео (небольшое), где показан процесс установки и настройки плагина, так как хоть он и бесплатный, но вторая часть — программа БИТ драйвер ККТ (сервер) платный. Не хочется, чтобы опять забанили.