После первого плагина на вордпресс решили написать такой же плагин для 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 переходом на более верхний уровень каталога, то есть добавлять вначале пути ../ .
Не знаю можно ли здесь выложить видео (небольшое), где показан процесс установки и настройки плагина, так как хоть он и бесплатный, но вторая часть - программа БИТ драйвер ККТ (сервер) платный. Не хочется, чтобы опять забанили.
Комментарии (15)
progreccor
05.09.2024 15:59а еще у joomla есть дружелюбный чат в телеграм где можно получить оперативную помощь по вашим вопросам - https://t.me/projoomla
kkmspb Автор
05.09.2024 15:59У меня все-таки вопрос висит в голове, никто не делал похожие расширения для джумлы, неужели потребности нет у пользователей? Я только в Вебассист встретил похожий вариант с kkmserver.
sergeytolkachyov
05.09.2024 15:59Конечно делали. Вот для Битрикс 24 https://web-tolk.ru/dev/joomla-plugins/wt-joomshopping-bitrix24-pro
Вот для Amo CRM https://web-tolk.ru/dev/biblioteki/wt-amo-crm-library и внизу плагин для Joomshopping
kkmspb Автор
05.09.2024 15:59sergeytolkachyov54 минуты назад
Конечно делали. Вот для Битрикс 24 https://web-tolk.ru/dev/joomla-plugins/wt-joomshopping-bitrix24-pro
Вот для Amo CRM https://web-tolk.ru/dev/biblioteki/wt-amo-crm-library и внизу плагин для Joomshopping
Посмотрел ссылки. Я имел ввиду возможность работать с оборудованием, подключенным к ПК пользователя админки - на эту тему разработки не нашел.
sergeytolkachyov
05.09.2024 15:59+1Можно посмотреть примеры в компоненте интернет-магазина Phoca Cart. Пример организации Point of sale - точки продаж. К компу подключен принтер для чеков, а интернет магазин используется в качестве ПО для ресторана кажется.
Но смысл же тот же самый: Joomla в нужный момент времени отправляет JSON на нужный адрес и/или получает. Что там по этому адресу: чья-то CRM или свой компьютер/сервер - уже не так важно.
kkmspb Автор
05.09.2024 15:59в компоненте интернет-магазина Phoca Cart
Спасибо изучим. Но похоже принтер для чеков это будет не кассовый аппарат.
sergeytolkachyov
05.09.2024 15:59+2Задача в целом та же самая: собрать JSON нужной структуры (или XML или еще что-то) и отослать на нужный endpoint.
kkmspb Автор
05.09.2024 15:59+1Задача в целом та же самая : собрать JSON нужной структуры (или XML или еще что-то) и отослать на нужный endpoint.
Я с этим не спорю, я имел ввиду функционал для пользователя. Чего ему (пользователю) еще может не хватать, какие возможности...
progreccor
05.09.2024 15:59у каждого кто связывается с физическим оборудованием всегда потребности очень специфические. Поэтому получить "универсальное" решение очень сложно. Его можно получить только в рамках комплекса, который будет предлагаться с каким то готовым оборудованием.
kkmspb Автор
05.09.2024 15:59+1у каждого кто связывается с физическим оборудованием всегда потребности очень специфические. Поэтому получить "универсальное" решение очень сложно. Его можно получить только в рамках комплекса, который будет предлагаться с каким то готовым оборудованием
Я про это и говорю, что есть сервер под виндоус (типа БИТ драйвер ККТ), есть единый протокол для однотипного оборудования разных производителей (которые никогда не могут договорится между собой о стандарте). Мы изолируем разработчиков от проблем с поддержкой разных моделей разных производителей. Идея хорошая, но сложная. Но надо попробовать начать... кому-то
progreccor
05.09.2024 15:59У нас есть интернет магазин radicalmart под Joomla. Может быть нам будет интересно по сотрудничать в этом направлении. Более подробно можно обсудить в телеграмм чате https://t.me/projoomla
sergeytolkachyov
Кхм... На Хабре в хабе Joomla есть статьи, углубившись в которые можно получить картину по разработке в общем и в деталях. Если вы используете PHP Storm или другую IDE, то скорость и качество разработки на Joomla вырастает в разы. Тот же PHP Storm прекрасно показывает подсказки по методам ядра Joomla, что устаревает, а что нет, количество и имена аргументов функций и т.д. По Joomla заполняется новый портал документации: manual.joomla.org. Так же ссылки можно найти на портале русскоязычного сообщества Joomla - https://joomlaportal.ru/documentation.
У Joomshopping развитая система событий плагинов. Использовать можно как его события, так и Joomla. Все зависит от контекста и задачи. С помощью плагинов можно внедряться в большинство мест и типов данных в Joomshopping, добавлять элементы интерфейса, отправлять данные в сторонние системы и т.д.
Точно так же возможно вам не нужен был модуль, так как судя по описанию в статье, вы понимаете роль модулей в Joomla несколько иначе, чем оно есть на самом деле.
По выполнению внешних запросов из Joomla на Хабре была статья - об HTTP Factory.
Добавление своих js и CSS в Joomla происходит с помощью Web Assets Manager. Здесь на Хабре есть статьи со списками литературы, в документации Joomla тоже есть описания как работать с этим. Не говоря о том, что да, код ядра Joomla сам по себе документация и жто не редкость во фреймворках. Опять-таки PHP Storm читает PHP Doc blocks и подсказывает как работать с кодом...
После прочтения вашего текста возникает ощущение, что вы прошли нелегкое испытание... Неужели это действительно так?
kkmspb Автор
Спасибо за ответ.
VS Code подвернулся под руку
Я хотел сказать, что открытый исходный код меня вполне устраивает (документацию придумали лентяи).
Как я понял модуль для вывода визуальной части в какую-то позицию интерфейса. Но вот как например объединить плагин с модулем, то есть все в один модуль запихнуть не понял. А в принципе хотелось бы все из одного zip файла устанавливать.
addScript устарел, так надо понимать?
Он платный? А то я платное не люблю с детства.
Напротив, удовольствие не покидало эти дни. Это не С++ со статической сборкой из исходников.
sergeytolkachyov
Пробегитесь по статье https://habr.com/ru/articles/760850/, особенно раздел "Если б Хабр был сделан на Joomla". Получите общее представление что и зачем.
Установить несколько расширений за 1 раз - легко. Для этого их собирают в пакеты. При установке можно ещё и зависимости установить, если они являются расширениями Joomla.