Новости 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 Гость просматривают эту тему.
  • 10 Ответов
  • 2463 Просмотров
*

OnePrg

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
Пишу свою компоненту. Решил идти методом аналогии, разбираю в отладчике работу компоненты "Категории" и переношу код в свою компоненту.

При создании/редактировании категории открывается форма administrator\components\com_categories\views\category\tmpl\edit.php

Чтобы подключить к стандартным кнопкам редактирования события в Joomla используется такой код

Код
JFactory::getDocument()->addScriptDeclaration('
Joomla.submitbutton = function(task)
{
if (task == "category.cancel" || document.formvalidator.isValid(document.getElementById("item-form")))
{
jQuery("#permissions-sliders select").attr("disabled", "disabled");
' . $this->form->getField("description")->save(). '
Joomla.submitform(task, document.getElementById("item-form"));

if (task !== "category.apply")
{
window.parent.jQuery("#categoryEdit' . $this->item->id . 'Modal").modal("hide");
}
}
};
');


Разъясните пожалуйста новичку следующее:

$this->form->getField("description")->save()

при чём здесь метод save к полю description? ведь save прописана в models?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Этот код не имеет ничего общего с методом save() в модели, он всего лишь выводит следующий JS-код:
Код: javascript
if (имя_текстового_редактора.get("jform_description").isHidden()) {имя_текстового_редактора.get("jform_description").show()}; имя_текстового_редактора.get("jform_description").save();
, который вызывает метод save() в скрипте текстового редактора.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

OnePrg

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
понял - спасибо
*

OnePrg

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
И всё таки как Joomla попадает в save? Всё та же запись категории из админки.

В administrator\components\com_categories\models\category.php поставил точку останова в начале функции save

Стек вызова в отладчике

save    FILE: administrator\components\com_categories\models\category.php    LINE: 478
save    FILE: libraries\legacy\controller\form.php    LINE: 735
execute    FILE: libraries\legacy\controller\legacy.php    LINE: 702
MAIN    FILE: W:administrator\components\com_categories\categories.php    LINE: 27
executeComponent    libraries\cms\component\helper.php    LINE: 405
renderComponent    libraries\cms\component\helper.php    LINE: 380
dispatch    FILE: libraries\cms\application\administrator.php    LINE: 98
doExecute    FILE: libraries\cms\application\administrator.php    LINE: 152
execute    FILE: libraries\cms\application\cms.php    LINE: 261
MAIN    FILE: administrator\index.php    LINE: 51

Получается что сразу после строки

$controller = JControllerLegacy::getInstance('Categories');

в точке входа в компоненту administrator\components\com_categories\categories.php

вызывается save из administrator\components\com_categories\models\category.php

КАК?
« Последнее редактирование: 26.12.2016, 13:13:44 от OnePrg »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Метод save контроллера вызывает метод save модели. Что вас так удивляет? Если вы отладчиком войдете в метод execute то увидете что никакой особой магии там нету.
интернет-блог: http://websiteprog.ru
*

OnePrg

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
Метод save контроллера вызывает метод save модели. Что вас так удивляет? Если вы отладчиком войдете в метод execute то увидете что никакой особой магии там нету.

Меня удивляет, то что до метода execute не доходит

$controller = JControllerLegacy::getInstance('Categories'); - ПРИ ВЫПОЛНЕНИИ ВОТ ЭТОЙ СТРОКИ Я ПОПАДАЮ В ТОЧКУ ОСТАНОВА В SAVE
$controller->execute($input->get('task'));


А вот когда стою на строке

$controller->execute($input->get('task'));

и нажимаю F11 (использую для отладки CodeLobster), то попадаю в libraries\legacy\controller\legacy.php      function redirect()

, а как мне попасть в саму execute?



Не могу врубиться, как кнопки на форме связываются с методами контроллера?



Не нахожу в administrator\components\com_categories\controllers\category.php метод save
« Последнее редактирование: 26.12.2016, 15:40:15 от OnePrg »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Меня удивляет, то что до метода execute не доходит
А меня удивляет, как вы решили написать компонент, будучи таким неподготовленным.
$controller = JControllerLegacy::getInstance('Categories'); - ПРИ ВЫПОЛНЕНИИ ВОТ ЭТОЙ СТРОКИ Я ПОПАДАЮ В ТОЧКУ ОСТАНОВА В SAVE
Не нахожу в administrator\components\com_categories\controllers\category.php метод save
- Вы подключаете один контроллер, а пытаетесь искать что-то в другом.
- Наследуемый класс может использовать public и protected методы родителей.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

OnePrg

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
благодарю!

пошёл готовиться :)
*

OnePrg

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
Братья и сестры!

Ну подскажите мне, пожалуйста, направьте на путь истинный советом или ссылкой на мануальчик

Пытаюсь писать свой компонент. Делаю по аналогии с компонентом com_categories

Сейчас нужно добавить в админке запись в таблицу, так же как добавляются категории. И вот я в своём компоненте открываю форму добавления записи



Если я не заполнил поле и нажимаю кнопку "Сохранить", выдаёт сообщение, что поле не заполнено



Если поля заполнил и нажимаю кнопку "Сохранить", то ничего не происходит вообще, даже в браузере ничего не крутиться




В той же компоненте com_categories при нажатии на такую кнопку я хоть попадаю в отладчик, а здесь при нажатии даже в administrator\index.php не заходит.

Код кнопки в com_categories:



код кнопки в моей компоненте


*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Есть ли ошибки JS в консоли? Покажите весь код формы. Скорее всего не хватает hidden полей, типа task или option, ну или id формы неверный.

Мануальчики здесь.
*

OnePrg

  • Осваиваюсь на форуме
  • 49
  • 1 / 0
Есть ли ошибки JS в консоли? Покажите весь код формы. Скорее всего не хватает hidden полей, типа task или option, ну или id формы неверный.

Мануальчики здесь.

За мануальчик весьма благодарю.

Пока решил всё сделать заново, если опять не получится отпишусь.
« Последнее редактирование: 28.12.2016, 22:34:06 от OnePrg »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla 6 -подключение Joomla.asset.jso в плагине, как?

Автор x1

Ответов: 3
Просмотров: 1921
Последний ответ 16.02.2026, 14:28:29
от sergeytolkachyov
Как поставить более старое раширение в Joomla 4.8.4?

Автор alexs64

Ответов: 4
Просмотров: 2646
Последний ответ 29.10.2025, 15:45:42
от web1
Компонент Search в Joomla 5

Автор hensler

Ответов: 4
Просмотров: 3631
Последний ответ 28.03.2025, 17:27:24
от azm1n
addScript (в админке) к пути файла js добавляет /administrator/. Зачем?

Автор kkmspb

Ответов: 0
Просмотров: 2230
Последний ответ 02.09.2024, 14:42:25
от kkmspb
Не могу разобраться как в админке заставить работать свой плагин

Автор kkmspb

Ответов: 3
Просмотров: 3305
Последний ответ 02.09.2024, 11:35:25
от kkmspb