Новости Joomla

👩‍💻 ИИ-админ для Joomla ближе, чем вы думаете: Joomla MCP.

👩‍💻 ИИ-админ для Joomla ближе, чем вы думаете: Joomla MCP.

В февральском номере Joomla Community Magazine в статье Evolving Joomla - Joomla CMS MCP Server: Opening the Door to AI-Powered Administration рассказывается о работе команды разработчиков над внедрением в ядро Joomla MCP-сервера.

Что такое MCP-сервер?
Последние годы всех захватывает бум ИИ-технологий. Появились ИИ-агенты - программы, устанавливаемые на сервер или компьютер, которые получают от вас запрос или задачу в человеческом виде и могут выполнять действия с файлами, ходить по сайтам, создавать сайты, программировать и т.д. Люди используют ИИ-агентов в самых разных ситуациях: от написания и проверки кода (даже там, где язык программирования не знаете совсем) до планирования путешествий и бронирования гостиницы.

ИИ-агенты могут использовать различные программные инструменты по протоколу Model Context Protocol (MCP). Для этого разработчик программы должен внедрить MCP в свой продукт или сервис. Так, например, ваш ИИ-агент может ходить по сайтам через браузер и собирать нужную информацию, управляя браузером через MCP-сервер. Или использовать функционал IDE PHP Storm для написания кода, сбора и отладки ошибок, использовать поиск PHP Storm по кодовой базе, а не простой текстовый поиск по файлам. MCP предоставляет набор функций для полноценного управления программным обеспечением.

В случае с Joomla, сервер MCP может предоставить администраторам следующие возможности:
- Автоматическое создание категорий, материалов и меню на основе карты сайта или PDF-файла.
- Создавайть SEO-оптимизированные заголовки и метаописания в пакетном режиме.
- Обновлять расширения на нескольких сайтах одновременно
- Создание посадочные страницы.

Важно отметить, что сервер MCP не задумывался как функция, доступная только «супер-администраторам». Цель инициативы — создать решение, которое будет простым в настройке, маломощным и доступным для широкого круга пользователей.

В процессе разработки точка входа Joomla (аналогично Site, Administrator, Api, Cli), которая будет работать с Streamable HTTP, необходимым для MCP. Аутентификация пока что предполагается на токенах, но затем планируется создание универсального OAuth-сервера для Joomla.
Фактические возможности MCP — инструменты, ресурсы и подсказки — реализованы в виде плагинов для обеспечения расширяемости. Таким образом ожидаем, что и сторонние разработчики смогут создавать MCP-плагины для внедрения поддержки своих расширений Joomla для работы с ИИ.

@joomlafeed

Вышли релизы безопасности Joomla 6.0.4 и Joomla 5.4.4

Релиз безопасности Joomla 6.0.4 и Joomla 5.4.4

Проект Joomla! рад сообщить о выходе Joomla 6.0.4 и Joomla 5.4.4. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

0 Пользователей и 1 Гость просматривают эту тему.
  • 7 Ответов
  • 1148 Просмотров
*

johnsnow91

  • Новичок
  • 6
  • 0 / 0
Добрый день! Я только начал разрабатывать плагин для Joomla и сложновато разобраться со структурой. В самой популярной статье по разработке на оф. сайте нет этой информации.

Мне необходимо добавить на страницу настроек плагина для способа доставки javascript и подключить AJAX. Как это можно сделать, если все настройки через XML работают? Есть какой-то специальный файл для подключения?
*

sivers

  • Живу я здесь
  • 2607
  • 361 / 0
Либо интегрировать тем же плагином (если он системный или контентный), или создавать свой тип поля, в котором будет реализовано подключение скрипта.
Второй способ не для новичка. Почитать можно тут:
http://joomla-book.ru/development/standard-parameter-types/creating-your-field-type
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

johnsnow91

  • Новичок
  • 6
  • 0 / 0
спасибо! Я для себя второй способ выбрал, но можете пояснить, как бы можно было добавить в первом способе скрипт так, чтобы он именно в настройках появился?
*

sivers

  • Живу я здесь
  • 2607
  • 361 / 0
но можете пояснить, как бы можно было добавить в первом способе скрипт так, чтобы он именно в настройках появился?
Конечно. В случае, если плагин принадлежит группе Content, достаточно использовать обработчик события onContentPrepareForm:
https://docs.joomla.org/Plugin/Events/Content#onContentPrepareForm
Он вызывается в момент подготовки формы к выводу на странице. А редактирование любого элемента, модуля, пункта меню, плагина - это ведь форма. В этом обработчике проверяете, что сейчас редактируется форма именно вашего плагина и подключаете свои скрипты стандартно через $doc->addScript().
Если же плагин системной группы, то подключить скрипт можно в обработчике события onBeforeCompileHead (подготовка к сборке <head>):
https://docs.joomla.org/Plugin/Events/System#onBeforeCompileHead
Только здесь вам придется проанализировать либо адресную строку, либо переданные в адресе параметры, чтоб узнать, что сейчас редактируется именно ваш плагин - ИД есть в конфиге конструктора плагина, все остальное из параметров ?option=com_plugins&view=plugin&layout=edit&extension_id=10022.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

johnsnow91

  • Новичок
  • 6
  • 0 / 0
@sivers, Спасибо за развернутый ответ! Похоже, что мне придется оба метода использовать. А что делать после того, как уже определил что это страница настроек?
К примеру, вот я распарсил гет-параметры и определил, что это страница - настройки моего плагина:
Код
public function onBeforeCompileHead(){
        $head = JFactory::getDocument()->getHeadData();
        $getParams = new JInput($_GET);
.....
    }
нужно как-то передать скрипт, который, к примеру, лежит в папке с плагином. Как мне это сделать? Есть какой-то метод? Не могу в документации накопать ничего про подключение javascript.
Если с контентом всё понятно, это можно в шаблоне сделать, то в случае с такими файлами, не могу понять, как тут бэк и фронт взаимодействуют... Извиняюсь за, возможно, глупые вопросы, но мне просто на голову свалили задачу не разбираясь, видел я хоть раз Joomla внутри или нет.
*

sivers

  • Живу я здесь
  • 2607
  • 361 / 0
Как мне это сделать?
Да все стандартно в жумле:
Код
        $app = JFactory::getApplication();
        $doc = $app->getDocument();
        $doc->addScript('/js/myPluginScript.js');
Если у вас жс лежит в папке плагина, то все точно так же, только надо вычислить путь к папке плагина от корня сайта:
Код
...
$path = str_replace(JPATH_SITE, '', __DIR__);
$doc->addScript($path.'/myPluginScript.js');
Обычно пользуюсь первым вариантом, чтоб не палить лишний раз имя плагина и джумлу в исходном коде сайта. Но, если хочется сделать полноценный плагин, чтоб все его файлы были в нем, то можно второй вариант размещения жс.

ПС
Вместо $getParams = new JInput($_GET); можно использовать $option = $app->input->getCmd('option', ''); $id = $app->input->getInt('extension_id', 0); и т.д.
« Последнее редактирование: 22.05.2020, 16:34:37 от sivers »
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

johnsnow91

  • Новичок
  • 6
  • 0 / 0
Огромное спасибо!
Я вытащил символьный код плагина вот такой конструкцией:
$this->getVmPluginMethod($app->input->getCmd('cid')[0])->shipment_element  и проверил на соответствие, теперь скрипт подключается только на странице доставки.
Вот такой результат получился:
В основном классе плагина добавил метод:
Код
public function onBeforeCompileHead(){
        $app = new Application\CMSApplication();
        if($this->getVmPluginMethod($app->input->getCmd('cid')[0])->shipment_element == 'код плагина' &&
        $app->input->getCmd('view') == 'shipmentmethod' && $app->input->getCmd('task') == 'edit'){
            JHtml::_('jquery.framework');
            JHtml::script( JURI::root().'путь к файлу js в папке плагина');
        }
    }
Внутри файла js весь Jquery код придется писать через jQuery, видимо, из-а их фреймворка.
Пока ещё не определился, делать ли свой тип поля или на яваскрипте кнопку добавлять, посмотрю, как пойдет дальше работа.
Ещё раз, огромное спасибо за помощь! Без Вас бы точно не справился!
*

sivers

  • Живу я здесь
  • 2607
  • 361 / 0
Пожалуйста.
Но лучше перепишите ваше условие вот так:
Код
if($app->input->getCmd('view') == 'shipmentmethod' && $app->input->getCmd('task') == 'edit' && $this->getVmPluginMethod($app->input->getCmd('cid')[0])->shipment_element == 'код плагина'){
В этом случае, если view и task не совпадут, то дальнейшая проверка с getVmPluginMethod вообще выполняться не будет. Она ведь что-то из БД читает? Т.е. вы при каждом заходе на любую страницу читаете это из БД ради проверки. Если поменять местами, то такого не будет происходить.

При перемене мест слагаемых сумма меняется таки )
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вставка видео со своего сервера через media manager

Автор goga_pgasovav

Ответов: 2
Просмотров: 2165
Последний ответ 27.03.2025, 14:51:43
от Akeksandr
Проблема вебвизором в Яндекс метрике при использовании плагина jch optimize

Автор polezniy

Ответов: 32
Просмотров: 5966
Последний ответ 01.03.2024, 10:26:31
от Vastriet
Получить текущий номер страницы плагина "Разрыв страницы" (pagebreak)

Автор sertlan

Ответов: 1
Просмотров: 1300
Последний ответ 12.06.2023, 18:14:09
от sertlan
Администрирую и редактирую сайт на CMS Joomla. Вопросы про настройки CMS

Автор admi5575

Ответов: 4
Просмотров: 1305
Последний ответ 10.05.2023, 09:02:29
от admi5575
ajax загрузка компонента на странице материала К2

Автор Divn

Ответов: 0
Просмотров: 1202
Последний ответ 13.01.2023, 15:05:52
от Divn