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

Nazaretto

  • Давно я тут
  • 666
  • 4 / 4
Здравствуйте! Столкнулся с такой проблемой:
На сайте http://live-football.com.ua/ есть вывод слайд-шоу (сверху, под меню). Слева, в области главного изображения слайд-шоу, есть 2 варианта перехода по ссылке:
1) Нажатие по заголовку, после чего перебрасывает на материал и при этом человек как бы размещен в одном из пунктов меню.
2) Нажатие по кнопке "ПОДРОБНЕЕ..." после чего производится переход на какую-то страничку, которая не является пунктом меню(отличие от 1-го варианта). Лишь материал выводит и все...
Собственно, в чем стоит вопрос. Мне нужно как-то сделать, что бы на кнопке "ПОДРОБНЕЕ" (2-й вариант) был тот же вид ссылки что и на заголовке (1-й вариант). По сути, ничего сложного. Код есть, его лишь нужно скопировать с первого варианта на второй. Увы, я PHP плохо знаю, по этому очень надеюсь на Вашу любую помощь.

Кидаю код из файла вывода. Вернее отрезок кода, в котором по моему мнению есть все принадлежащее для решения данной задачи.
Код
// Switching type of link
switch($item->linktype)
{
// link value
case 0:
$slide_link = $item->linkvalue;
break;
// standard link value
case 1:
$slide_link = JRoute::_(ContentHelperRoute::getArticleRoute($item->article, $item->cid, $item->sid));
break;
// blank link
default:
$slide_link = '';
break;
}
// links in titles are enabled ?
if($this->title_link == 0)
{
$slide_text = '<h2 style="color:'.$this->base_titlecolor.';">'.$slide_title.'</h2><p style="color:'.$slide_textcolor.';">'.$slide_text;
}
else // in other situation
{
// preparing hover effect
$hover_effect = ' style="color:'.$this->base_titlecolor.';" onmouseover="this.style.color = \''.$this->base_hlinkcolor.'\';" onmouseout="this.style.color = \''.$this->base_titlecolor.'\'" ';
// and code with link and hover efect
$slide_text = '<h2><a href="'.$slide_link.'" '.$hover_effect.' class="gk_news_image_6_title">'.$slide_title.'</a></h2><p style="color:'.$slide_textcolor.';">'.$slide_text;
}
// finishing slide text
$slide_text .= '</p>';
// filling JSON data tag
$this->JSON .= '<div class="gk_ni_6_news_text">'.$slide_text.'</div><div class="gk_ni_6_news_link">'.$slide_link.'</div>';
// push prepared data to slide storage
array_push($this->slides, $prepared_image);
}
}
// finishing JSON data tag
$this->JSON .= '</div>';
}

/**
Method for generating content
**/

function generateContent()
{
// create instances of basic Joomla! classes
$document =& JFactory::getDocument(); // getting handle to document
$uri =& JURI::getInstance(); // getting instance of JURI class
// include file content.php and parse it
require(JModuleHelper::getLayoutPath('mod_gk_news_image_6', 'content'));
// add stylesheets to document header
$document->addStyleSheet( $uri->root().'modules/mod_gk_news_image_6/css/style.css', 'text/css' );
// init $headData variable
$headData = false;
// add scripts with automatic mode to document header
if($this->useMoo == 2)
{
// getting module head section datas
unset($headData);
$headData = $document->getHeadData();
// generate keys of script section
$headData_keys = array_keys($headData["scripts"]);
// set variable for false
$mootools_founded = false;
// searching phrase mootools in scripts paths
for($i = 0;$i < count($headData_keys); $i++)
{
if(preg_match('/mootools/i', $headData_keys[$i]))
{
// if founded set variable to true and break loop
$mootools_founded = true;
break;
}
}
// if mootools file doesn't exists in document head section
if(!$mootools_founded)
{
// add new script tag connected with mootools from module
$headData["scripts"][$uri->root().'modules/mod_gk_news_image_6/js/mootools.js'] = "text/javascript";
// if added mootools from module then this operation have sense
$document->setHeadData($headData);
}
}
// if automatic including of JavaScript engine is enabled
if($this->useScript == 2){
// getting module head section datas
unset($headData);
$headData = $document->getHeadData();
// generate keys of script section
$headData_keys = array_keys($headData["scripts"]);
// set variable for false
$engine_founded = false;
// searching phrase mootools in scripts paths
if(array_search($uri->root().'modules/mod_gk_news_image_6/js/engine'.(($this->compress_js == 1)? '_compressed' : '').'.js', $headData_keys) > 0)
{
// if founded set variable to true
$engine_founded = true;
}
// if mootools file doesn't exists in document head section
if(!$engine_founded)
{
// add new script tag connected with mootools from module
$headData["scripts"][$uri->root().'modules/mod_gk_news_image_6/js/engine'.(($this->compress_js == 1)? '_compressed' : '').'.js'] = "text/javascript";
// if added mootools from module then this operation have sense
$document->setHeadData($headData);
}
}
// if clean code is enable use importer.php to include
// module settings in head section of document
if($this->clean_code)
{
// add script tag with module configuration to document head section
// get head document section data
unset($headData);
$headData = $document->getHeadData();
// add new script tag to head document section data array
$headData["scripts"][$uri->root().'modules/mod_gk_news_image_6/js/importer.php?mid='.$this->module_id.'&amp;animation_slide_speed='.$this->animation_slide_speed.'&amp;animation_interval='.$this->animation_interval.'&amp;autoanimation='.$this->autoanimation.'&amp;animation_slide_type='.$this->animation_slide_type.'&amp;animation_text_type='.$this->animation_text_type.'&amp;thumbnail_width='.$this->thumbnail_width.'&amp;thumbnail_height='.$this->thumbnail_height.'&amp;tabs_amount='.$this->tabs_amount.'&amp;base_bgcolor='.str_replace('#','',$this->base_bgcolor).'&amp;text_block_opacity='.$this->text_block_opacity] = "text/javascript";
// if added mootools from module then this operation have sense
$document->setHeadData($headData);
}
// add default.php template to parse if it's necessary
if($this->useMoo != 2 || $this->useScript != 2 || !$this->clean_code)
{
require(JModuleHelper::getLayoutPath('mod_gk_news_image_6', 'default'));
}
}
}

p.s.
Если нужно, могу сделать скрин-шоты любой части БД, либо выложить необходимые PHP файлы. Говорите, если что-то необходимо...

Заранее благодарю!
*

Nazaretto

  • Давно я тут
  • 666
  • 4 / 4
Re: Найти и переместить код PHP
« Ответ #1 : 15.08.2010, 21:17:37 »
Пожалуйста, хотя бы подскажите что где!?
*

petrenkodim

  • Осваиваюсь на форуме
  • 49
  • 5 / 0
Re: Найти и переместить код PHP
« Ответ #2 : 15.08.2010, 21:33:28 »
это:
Код
// Switching type of link
switch($item->linktype)
{
// link value
case 0:
$slide_link = $item->linkvalue;
break;
// standard link value
case 1:
$slide_link = JRoute::_(ContentHelperRoute::getArticleRoute($item->article, $item->cid, $item->sid));
break;
// blank link
....
поменяй на это:
Код
// Switching type of link
switch($item->linktype)
{
// standard link value
case 0: case 1:
$slide_link = JRoute::_(ContentHelperRoute::getArticleRoute($item->article, $item->cid, $item->sid));
break;
// blank link
....
*

Nazaretto

  • Давно я тут
  • 666
  • 4 / 4
Re: Найти и переместить код PHP
« Ответ #3 : 15.08.2010, 23:24:56 »
это:
Код
// Switching type of link
switch($item->linktype)
{
// link value
case 0:
$slide_link = $item->linkvalue;
break;
// standard link value
case 1:
$slide_link = JRoute::_(ContentHelperRoute::getArticleRoute($item->article, $item->cid, $item->sid));
break;
// blank link
....
поменяй на это:
Код
// Switching type of link
switch($item->linktype)
{
// standard link value
case 0: case 1:
$slide_link = JRoute::_(ContentHelperRoute::getArticleRoute($item->article, $item->cid, $item->sid));
break;
// blank link
....
То же самое... (
*

Nazaretto

  • Давно я тут
  • 666
  • 4 / 4
Re: Найти и переместить код PHP
« Ответ #4 : 17.08.2010, 22:22:01 »
Может у кого-то еще какие-то мысли есть?
*

Nazaretto

  • Давно я тут
  • 666
  • 4 / 4
Re: Найти и переместить код PHP
« Ответ #5 : 20.08.2010, 23:01:05 »
Ладно... раз никто не знает, то просто уберу кнопку "Подробнее"..
Тему можно закрывать
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться