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

websalamat

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Этот вопрос решался в Joomla 2.5, но требует доработки.
Неоднократно слышал мнение, что активный пункт меню не должен быть ссылкой. Т.е. я кликнул на ссылку, она стала активной, к примеру обрамленной рамочкой, а название пункта вместо ссылки становится текстом. В стандартном модуле "Навигация" оно так и показывает местоположение.

В Joomla 2.5 вопрос решался хаком модуля меню и вроде все хорошо, НО ЕСТЬ ПроблемА!
Есть пункт меню "Новости", у которого в настройках поставил, чтобы отображался только первый уровень. И с родительским уровнем "Новости" создал еще подменю и в модуле прописал, чтобы показывался только второй уровень на странице "Новости"
Получилось вот так:


Такая настройка нужная для того, чтобы одновременно был активен пункт новости и одновременно активен пункт Экономика.
Вот в этом случае проблема с пунктом меню и проявляется, т.к. если применить хак, который был приемлим для Joomla 2.5, то он делал неактивным и пункт "Новости" и пункт "Экономика".

По сути должно работать так: Кликнкул по пункту Новости - он стал неактивным. Затем кликнул по пункту "Экономика" - этот пункт стал неактивным, а "Новости" снова стал ссылкой, чтобы можно было вернуться к списку новостей. При этом они оба должны быть выделенными, чтобы человек понимал, что он находится в разделе Новости и его подразеле "Экономика".

Как это воспроизвести?
У студии Лебедева на сайте меню работает подобным образом.
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Я не знаю, про какой хак идёт речь. Начиная с версии 1,6 это решается путём оверрайда шаблона модуля меню. В вашем случае нужно условие писать не if ($item->current) {}, а if ($item->active) {}.
*

websalamat

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
В Joomla 3 по пути:
modules\mod_menu\tmpl\default.php
не нашел строчки с  if ($item->current)

Но заменил
   if (($item->id == $active_id) OR ($item->type == 'alias' AND $item->params->get('aliasoptions') == $active_id))
   {
      $class .= ' В ЭТОМ МЕСТЕ с curent НА active';
   }

Теперь в подменю новостей все показывается как надо, а вот в первом уровне, где новости, история и т.д. кликаю на ссылку - она выделяется и остается ссылкой. Что делаю не так?
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Вы же класс заменили, а не разметку. Ссылка так и осталась ссылкой. Нужно это условие добавить в вывод пункта меню. Файл …default_url. Только править нужно естественно не в модуле, а в папке шаблона.
*

websalamat

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Код
<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_menu
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

// Note. It is important to remove spaces between elements.
$class = $item->anchor_css ? 'class="' . $item->anchor_css . '" ' : '';
$title = $item->anchor_title ? 'title="' . $item->anchor_title . '" ' : '';

if ($item->menu_image)
{
$item->params->get('menu_text', 1)?
$linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" /><span class="image-title">' . $item->title . '</span> ' :
$linktype = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" />';
}
else
{
$linktype = $item->title;
}

$flink = $item->flink;
$flink = JFilterOutput::ampReplace(htmlspecialchars($flink));

switch ($item->browserNav) :
default:
case 0:
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 1:
// _blank
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" target="_blank" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
case 2:
// Use JavaScript "window.open"
$options = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,' . $params->get('window_open');
?><a <?php echo $class; ?>href="<?php echo $flink; ?>" onclick="window.open(this.href,'targetWindow','<?php echo $options;?>');return false;" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
break;
endswitch;

Это шаблонный default_url
Но здесь нигде нет current.
Шаблон у меня protostar.

Читал как делают другие, они меняют на

Код
case 0:
if (in_array($item->id, $path) || in_array($aliasToId , $path)){
echo '<span '.$class.'>'.$linktype.'</span>';
}else {
?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" <?php echo $title; ?>><?php echo $linktype; ?></a><?php
}
break;

Но в этом случае у меня подменю работает как надо, а вот родительское меню где нет подпунктов остается ссылкой.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Двойное меню

Автор cirip

Ответов: 0
Просмотров: 2905
Последний ответ 05.11.2024, 23:19:21
от cirip
Пункт меню Текстовый разделитель ведет на главную страницу

Автор zahar_92

Ответов: 8
Просмотров: 6171
Последний ответ 27.07.2023, 13:37:17
от ei-dos
[РЕШЕНО]Скрыть пункт меню на мобильных устройствах

Автор lexxbry

Ответов: 16
Просмотров: 9147
Последний ответ 23.05.2023, 07:22:49
от geral
Цвет фона меню

Автор IhorPH

Ответов: 7
Просмотров: 4601
Последний ответ 21.03.2023, 11:47:29
от marksetter
OffCanvas меню Helix Ultimate добавить текст к иконке

Автор Andre100

Ответов: 2
Просмотров: 5884
Последний ответ 20.03.2023, 12:42:49
от Andre100