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

tooth

  • Захожу иногда
  • 67
  • 1 / 5
Таймер обратного отчета
« : 07.07.2016, 14:12:03 »
Здравствуйте дорогие форумчане! помогите решить проблему на сайте стоит таймер обратного отчета до акции осталось столько столь, при завершении таймер останавливается и все, а мне нужно чтобы он заново начинал отчет времени по окончаний! вот код скрипта, буду очень любезен за помощь! !

$(function () {
   placeholder_emul();
//   my_countdown();
   side_box();
   show_modal(".js_control_v1", ".modal_1");
   show_modal(".js_control_v2", ".modal_2");
   show_modal(".js_control_v3", ".modal_3");
   close_modal();
   closeThanks();
   slider_v1('.slider_v1');
   slider_v1('.back_slider');
   double_slider();
   fliptimer();
});

function placeholder_emul() {
   if (!Modernizr.input.placeholder) {

      $('[placeholder]').focus(
         function () {
            var input = $(this);
            if (input.val() == input.attr('placeholder')) {
               input.val('');
               input.removeClass('placeholder');
            }
         }).blur(
         function () {
            var input = $(this);
            if (input.val() == '' || input.val() == input.attr('placeholder')) {
               input.addClass('placeholder');
               input.val(input.attr('placeholder'));
            }
         }).blur();
      $('[placeholder]').parents('form').submit(function () {
         $(this).find('[placeholder]').each(function () {
            var input = $(this);
            if (input.val() == input.attr('placeholder')) {
               input.val('');
            }
         })
      });

   }
}

function my_countdown() {
   var $year = 2016;
   var $month = 7;
   var $day = 29;
   var $hour = 0;
   var $min = 0;

   $month--;
   var $date = new Date($year, $month, $day, $hour, $min);
   $(".countdown").countdown({until: $date, format: "d,H,M,S"})
}

function side_box() {
   $('.btn_side').on('click', function () {
      $(this).closest('.consult_box').toggleClass('active');
   });

   // side_box hide after click submit
   $('.js_side_control').on('click', function () {
      setTimeout(function () {
         $('.consult_box').removeClass('active');
      }, 1000);
   })
}

function show_modal(m_trigger, m_modal) {
   m_trigger = $(m_trigger);
   m_modal = $(m_modal);
   var $modal_wrap = m_modal.closest('.modal_wrap');

   m_trigger.on('click', function () {
      $modal_wrap.fadeIn(500);
      m_modal.addClass('active');
      return false;
   });

}

$(document).on('click', function (event) {
   if ($(event.target).closest(".modal_box").length) {

   }
   else {
      $('.modal_box').removeClass('active');
      $('.modal_wrap').fadeOut(700);
      event.stopPropagation();
   }

});

function close_modal() {
   $('.modal_close').on('click', function () {
      $(this).closest(".modal_box").removeClass('active');
      $(".modal_wrap").fadeOut(700);
      return false;
   });
}

function hideThanksBox() {
   $('#thanks_box').fadeOut(500);
   $('.thanks_main').fadeOut(700);
}
function closeThanks() {
   $('#thanks_close, .btn_ok').on('click', function () {
      hideThanksBox();
      return false;
   });
}
function slider_v1(slider) {
   var $main_slider = $(slider);
   if ($main_slider.length) {
      $main_slider.bxSlider({
         pager: false,
         mode: 'fade',
         controls: true,
         prevText: "",
         nextText: ""
      });
   }

}

function double_slider() {
   $('.main_slider_wrap .bx-prev').on('click', function () {
      $('.back_slider_wrap .bx-prev').click();
   });
   $('.main_slider_wrap .bx-next').on('click', function () {
      $('.back_slider_wrap .bx-next').click();
   })
}
function getCookie(name) {
  var matches = document.cookie.match(new RegExp(
    "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  ));
  return matches ? decodeURIComponent(matches[1]) : undefined;
}

function setCookie(name, value, options) {
  options = options || {};

  var expires = options.expires;

  if (typeof expires == "number" && expires) {
    var d = new Date();
    d.setTime(d.getTime() + expires*1000);
    expires = options.expires = d;
  }
  if (expires && expires.toUTCString) {
     options.expires = expires.toUTCString();
  }

  value = encodeURIComponent(value);

  var updatedCookie = name + "=" + value;

  for(var propName in options) {
    updatedCookie += "; " + propName;
    var propValue = options[propName];   
    if (propValue !== true) {
      updatedCookie += "=" + propValue;
     }
  }

  document.cookie = updatedCookie;
}

function formatTimeOfDay(millisSinceEpoch) {
  var secondsSinceEpoch = (millisSinceEpoch / 1000);
  var days = (secondsSinceEpoch / 86400) | 0;
  if(days >= 1){
     var days = days.toFixed(0);
     secondsSinceEpoch = secondsSinceEpoch - days*86400;
  }
  var hours = (secondsSinceEpoch / 3600) | 0;
  if(hours >= 1){
     var hours = hours.toFixed(0);
     secondsSinceEpoch = secondsSinceEpoch - hours*3600;
  }
  var minutes = (secondsSinceEpoch / 60) | 0;
  if(minutes >= 1){
     var minutes = minutes.toFixed(0);
     secondsSinceEpoch = secondsSinceEpoch - minutes*60;
  }
  seconds = secondsSinceEpoch.toFixed(0);
  return days + (hours < 10 ? ":0" : ":")
      + hours + (minutes < 10 ? ":0" : ":")
      + minutes + (seconds < 10 ? ":0" : ":")
      + seconds;
}

function fliptimer() {
   if(getCookie('stockTimerStart') === undefined){
      setCookie('stockTimerStart', $.now());
   }
   // 172800000 48 часа
   var startTime = 772800000 - ($.now() - getCookie('stockTimerStart'));// время до конца акции миллисекундах
   if(startTime <= 0){
      var timer = "00.00:00:00";
   }else{
      var timer = formatTimeOfDay(startTime);
   }
   $('#counterCID1 .digits').countdown({
      image: 'img_count/digits1_middle_black.png',
      startTime: timer,
      startTimeNext: '0:0:0:0',
      startTimeEnd: '0:0:0:0',
      intervalsCnt: 0,
      digitWidth: 36,
      digitHeight: 52,
      stepTime: 60,
      timerEnd: function () {
         $('.timer_hold .cap').addClass('red').html('Акция завершена!');
      }
   });
}











Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Самая простая форма заказа обратного звонка

Автор inko_gnito

Ответов: 4
Просмотров: 2522
Последний ответ 07.10.2013, 16:49:21
от inko_gnito