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

slonnik

  • Осваиваюсь на форуме
  • 29
  • 1 / 0
Добрый день! Подскажите, пожалуйста, как сделать, чтобы при нажатии на объявление в списке объявлений оно открывалось  рядом со списком всех объявлений, например, как на сайте http://arendapermi.ru/index.php/catalog
Может быть, можно как вывести объявление в определенную позицию сайта, например, left или right?
Заранее спасибо!

P.S. AdsManager 2.6.5
Пробовала вариант такой. Список всех объявлений вывести в модуль, тогда и список и описание объявления на одной странице, но проблема в том, что если еще к этому добавить поиск, то результат поиска не влияет на список объявлений в модуле.
*

slonnik

  • Осваиваюсь на форуме
  • 29
  • 1 / 0
*

semo777

  • Захожу иногда
  • 76
  • 0 / 0
Можно поподробней, что? куда?
*

slonnik

  • Осваиваюсь на форуме
  • 29
  • 1 / 0
Вот здесь подробно описано: http://joomlaportal.ru/content/view/1365/68/
1. Подключить библиотеку Dynamic AJAX Content:
прописать скрипт в <head>
<script type="text/javascript" src="<?php echo $mosConfig_live_site;?>/ваш_путь/ajaxlib.js"></script>
</head>
Содержимое файла ajaxlib.js
Код
var cartip=document.createElement("div") //Dynamically create tooltip element
cartip.setAttribute("id", "cartooltip")
document.body.appendChild(cartip)
var cartooltipobj=document.getElementById("cartooltip")
var rightcolumnobj=document.getElementById("rightcolumn")

function ietruebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

document.getElementById("rightcolumn").onmouseover=function(){ //show tooltip
var titletext=document.getElementById("cartitle")? document.getElementById("cartitle").innerHTML : "DD Forums Archive"
cartooltipobj.innerHTML=titletext
cartooltipobj.style.left=rightcolumnobj.offsetLeft+rightcolumnobj.offsetWidth-180+"px"
cartooltipobj.style.top=rightcolumnobj.offsetTop+rightcolumnobj.offsetHeight-40+"px"
cartooltipobj.style.visibility="visible"
}

document.getElementById("rightcolumn").onmouseout=function(){ //hide tooltip
document.getElementById("cartooltip").style.visibility="hidden"
}
2. В шаблоне публичной части поместить в контейнер div с ID="ваш_id":
Код
<div id="content">
  <?php echo mosMainBody();?> <!-- если вставить это php код, то в этом div будет отображаться все, что в основной части сайта -->
</div>
3. В файлах, где будет использоваться скрипт прописать:
Код
<script type="text/javascript">

var loadedobjects=""
var rootdomain="http://"+window.location.hostname

function ajaxpage(url, containerid){
var page_request = false
if (window.XMLHttpRequest) // if Mozilla, Safari etc
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){ // if IE
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
page_request.onreadystatechange=function(){
loadpage(page_request, containerid)
}
page_request.open('GET', url, true)
page_request.send(null)
}

function loadpage(page_request, containerid){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
document.getElementById(containerid).innerHTML=page_request.responseText
}

function loadobjs(){
if (!document.getElementById)
return
for (i=0; i<arguments.length; i++){
var file=arguments[i]
var fileref=""
if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
if (file.indexOf(".js")!=-1){ //If object is a js file
fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", file);
}
else if (file.indexOf(".css")!=-1){ //If object is a CSS file
fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", file);
}
}
if (fileref!=""){
document.getElementsByTagName("head").item(0).appendChild(fileref)
loadedobjects+=file+" " //Remember this object as being already added to page
}
}
}

</script>

Ссылку прописать следующим образом:
Код
<a href="javascript:ajaxpage('ваша_ссылка', 'ваш_id');">ajax link</a>

Если надо, чтобы в div отображалось только основная информация, т.е. без меню и модулей, то необходимо преобразовать ссылку, заменить index.php на index2.php:
Код
$ajaxLink = str_replace("index", "index2", $mitem->link);

Приводим полученный урл к нужному виду:
Код
$ajaxLink = "javascript:ajaxpage('$ajaxLink', 'ваш_id');";
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

AdsManager вывод нужных полей по отдельности

Автор klekovkinandrey

Ответов: 2
Просмотров: 17565
Последний ответ 06.04.2024, 09:54:15
от Rinat abzyi
Редактировать все объявления

Автор den_ko

Ответов: 32
Просмотров: 15110
Последний ответ 25.11.2021, 10:43:38
от FlexNL
Вывод данных

Автор FlexNL

Ответов: 0
Просмотров: 4349
Последний ответ 06.11.2021, 12:37:54
от FlexNL
Заглушки с http://placehold.it вместо картинок в списке объявлений

Автор efimov777

Ответов: 6
Просмотров: 6600
Последний ответ 12.04.2020, 07:25:59
от Pavel
Слетают категории объявления

Автор guardnext

Ответов: 1
Просмотров: 4854
Последний ответ 09.07.2019, 10:10:59
от guardnext