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

dimix1978

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
В статистике команды есть пункт "Матчи без пропущенных командой мячей".
Задача добавить пункт "Матчи без забитых командой мячей".
Помогите разобраться с PHP.

Что уже сделано:

Для начала сделаем повтор имеющегося пункта статистики. Для этого файле components/com_joomleague/views/teamstats/tmpl/default_stats.php копируем код расположенный с  258 по 265 строку.
Код
<tr class="sectiontableentry1">
<td class="statlabel"><?php echo JText::_('COM_JOOMLEAGUE_TEAMSTATS_NO_GOALS_AGAINST'); ?></td>
<td class="statvalue"><?php echo $this->nogoals_against->totalzero; ?></td>
<?php if ( $this->config['home_away_stats'] ): ?>
<td class="statvalue"><?php echo empty($this->nogoals_against->homezero)? 0 : $this->nogoals_against->homezero; ?></td>
<td class="statvalue"><?php echo empty($this->nogoals_against->awayzero)? 0 : $this->nogoals_against->awayzero; ?></td>
<?php endif; ?>
</tr>
Меняем в коде "nogoals_against" на "nogoals_for". И вставляем правленный код ниже изначального.
Код
<tr class="sectiontableentry1">
<td class="statlabel"><?php echo JText::_('COM_JOOMLEAGUE_TEAMSTATS_NO_GOALS_FOR'); ?></td>
<td class="statvalue"><?php echo $this->nogoals_for->totalzero; ?></td>
<?php if ( $this->config['home_away_stats'] ): ?>
<td class="statvalue"><?php echo empty($this->nogoals_for->homezero)? 0 : $this->nogoals_for->homezero; ?></td>
<td class="statvalue"><?php echo empty($this->nogoals_for->awayzero)? 0 : $this->nogoals_for->awayzero; ?></td>
<?php endif; ?>
</tr>
Далее в файле /components/com_joomleague/views/teamstats/view.html.php копируем 46 строку
Код
$this->assignRef( 'nogoals_against', $model->getNoGoalsAgainst( ) );
и тоже производим замену "nogoals_against" на "nogoals_for"
Измененную строку вставляем ниже оригинала
Код
$this->assignRef( 'nogoals_for', $model->getNoGoalsFor( ) );
Затем такую же процедуру производим в файле components/com_joomleague/models/teamstats.php
рядом с кодом из строк с 234 по 257
 
Код
function getNoGoalsAgainst( )
    {
    if ( (!isset( $this->nogoals_against )) || is_null( $this->nogoals_against ) )
    {
    $query = ' SELECT '
       . ' COUNT( round_id ) AS totalzero, '
       . ' SUM( t1.id = '.$this->team->id.' AND team2_result=0 ) AS homezero, '
       . ' SUM( t2.id = '.$this->team->id.' AND team1_result=0 ) AS awayzero '
       . ' FROM #__joomleague_match as matches '
       . ' INNER JOIN #__joomleague_project_team pt1 ON pt1.id = matches.projectteam1_id '
       . ' INNER JOIN #__joomleague_team t1 ON t1.id = pt1.team_id '
       . ' INNER JOIN #__joomleague_project_team pt2 ON pt2.id = matches.projectteam2_id '
       . ' INNER JOIN #__joomleague_team t2 ON t2.id = pt2.team_id '
       . ' WHERE pt1.project_id = '.$this->projectid.' '
       . ' AND published=1 '
       . ' AND alt_decision=0 '
       . ' AND ((t1.id = '.$this->team->id.' AND team2_result=0 ) '
       . ' OR  (t2.id = '.$this->team->id.' AND team1_result=0 ))'
   . ' AND (matches.cancel IS NULL OR matches.cancel = 0)'
       ;
    $this->_db->setQuery($query);
    $this->nogoals_against = $this->_db->loadObject( );
    }
    return $this->nogoals_against;
    }

Вставляем правленный код:

Код
function getNoGoalsFor( )
    {
    if ( (!isset( $this->nogoals_for )) || is_null( $this->nogoals_for ) )
    {
    $query = ' SELECT '
       . ' COUNT( round_id ) AS totalzero, '
       . ' SUM( t1.id = '.$this->team->id.' AND team2_result=0 ) AS homezero, '
       . ' SUM( t2.id = '.$this->team->id.' AND team1_result=0 ) AS awayzero '
       . ' FROM #__joomleague_match as matches '
       . ' INNER JOIN #__joomleague_project_team pt1 ON pt1.id = matches.projectteam1_id '
       . ' INNER JOIN #__joomleague_team t1 ON t1.id = pt1.team_id '
       . ' INNER JOIN #__joomleague_project_team pt2 ON pt2.id = matches.projectteam2_id '
       . ' INNER JOIN #__joomleague_team t2 ON t2.id = pt2.team_id '
       . ' WHERE pt1.project_id = '.$this->projectid.' '
       . ' AND published=1 '
       . ' AND alt_decision=0 '
       . ' AND ((t1.id = '.$this->team->id.' AND team2_result=0 ) '
       . ' OR  (t2.id = '.$this->team->id.' AND team1_result=0 ))'
   . ' AND (matches.cancel IS NULL OR matches.cancel = 0)'
       ;
    $this->_db->setQuery($query);
    $this->nogoals_for = $this->_db->loadObject( );
    }
    return $this->nogoals_for;
    }

Таким образом, у нас дважды отобразилась статистика по матчам в которых команда не пропускала.

Теперь надо разобратся в последнем коде и заменить переменные. Для этого требуется помощь знающих людей.
*

tranceRoller

  • Захожу иногда
  • 452
  • 37 / 0
Re: Дополняем статистику команды
« Ответ #1 : 07.01.2014, 19:20:25 »
Вот это - жесть. Человек может найти нужные ему функции незная PHP. В чём секрет?

По топику.
Меняем эти строки:
Код
. ' SUM( t1.id = '.$this->team->id.' AND team2_result=0 ) AS homezero, '
. ' SUM( t2.id = '.$this->team->id.' AND team1_result=0 ) AS awayzero '
Код
. ' AND ((t1.id = '.$this->team->id.' AND team2_result=0 ) '
. ' OR  (t2.id = '.$this->team->id.' AND team1_result=0 ))'

на эти:

Код
. ' SUM( t1.id = '.$this->team->id.' AND team1_result=0 ) AS homezero, '
. ' SUM( t2.id = '.$this->team->id.' AND team2_result=0 ) AS awayzero '
Код
. ' AND ((t1.id = '.$this->team->id.' AND team1_result=0 ) '
. ' OR  (t2.id = '.$this->team->id.' AND team2_result=0 ))'

UPDATE: Исправил ошибку в коде, указанную ниже
« Последнее редактирование: 08.01.2014, 01:44:16 от tranceRoller »
*

dimix1978

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Re: Дополняем статистику команды
« Ответ #2 : 07.01.2014, 22:12:49 »
Ну вот сделали доброе дело)))). Очередной раз спасибо tranceRoller!
Я думаю иметь такой показатель в статистике вполне логично. Даже удивительно почему разработчики его упустили.

Единственное дополнение к изложенному tranceRoller. Вторая часть кода у Вас повторяет оригинал, но эта опечатка легко читается. Меняем team1 и team2 местами. Короче вставляем вот это -

Код
. ' AND ((t1.id = '.$this->team->id.' AND team1_result=0 ) '
. ' OR  (t2.id = '.$this->team->id.' AND team2_result=0 ))'

Ну и не забываем в языковой файл (language/ru-RU/ru-RU.com_joomleague.ini) добавить строчку :
COM_JOOMLEAGUE_TEAMSTATS_NO_GOALS_FOR="Матчи без забитых мячей".

PS: О секрете. Интуиция и усердие иногда могут заменить знания))). Хотя хочется конечно и поучить PHP.
« Последнее редактирование: 07.01.2014, 22:21:12 от dimix1978 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

joomleague 2.92 - описание команды

Автор pro1024

Ответов: 1
Просмотров: 2429
Последний ответ 19.08.2015, 07:36:20
от dimix1978
Добавление команды в календарь

Автор born

Ответов: 3
Просмотров: 2466
Последний ответ 27.05.2015, 15:01:08
от Геныч
Увеличение даты всех матчей на один день в календаре игр команды

Автор uf1976

Ответов: 15
Просмотров: 3778
Последний ответ 29.04.2014, 17:50:12
от M0sk0W
Проблема с описанием команды в Roster

Автор dimix1978

Ответов: 3
Просмотров: 1747
Последний ответ 05.12.2013, 21:54:10
от Геныч
Редактирование результатов в Списке Матчей Команды

Автор Outstanding

Ответов: 2
Просмотров: 1561
Последний ответ 10.07.2013, 16:52:03
от Outstanding