Новости Joomla

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

С тех пор, как в поисковиках появились нейроответы ИИ, трафик на сайты стал гораздо меньше, так как пользователь стал получать информацию непосредственно на странице поисковика без перехода на сайт. Но при генерации ответа ИИ указывает источники - ссылки на сайты, информация которых была использована для генерации ответа.

Долгое время у всех был немой вопрос: "Как же теперь оценивать эффективность сайта?". Теперь этот на этот вопрос отчасти отвечает новый инструмент аналитики.
Процитируем справку Яндекса по инструменту:
На запросы пользователей в Поиске может отвечать Алиса AI. Ответы появляются в поисковой выдаче, в объектных ответах и на отдельной вкладке Поиска. В них чаще всего упоминаются страницы сайтов, на которые Алиса AI опиралась при подготовке ответа.

С помощью инструмента Видимость сайта в Алисе AI в Яндекс Вебмастере вы можете:
- узнать долю упоминаний сайта среди источников в ответах Алисы AI в Поиске и отследить динамику изменений;
- посмотреть примеры запросов, по которым страницы сайта показываются в ответах Алисы AI;
- посмотреть примеры сайтов той же тематики, которые часто упоминаются в генеративной выдаче.
Данные отображаются за последние 3 месяца и обновляются каждую неделю.

Статистика собирается только по тем запросам, по которым ваш сайт уже находится достаточно высоко в поисковой выдаче. Это позволяет анализировать видимость именно в той нише, где вы заинтересованы в продвижении, и избегать «размытия» по малозначимым для вас запросам.

Кроме того, такой подход обусловлен работой Алисы AI: она строит ответ с опорой на самые релевантные, информативные и качественные страницы, которые обычно занимают высокие позиции в Поиске.

Чтобы увидеть статистику вашего сайта в меню Яндекс.Вебмастера перейдите в раздел "Эффективность" и далее в "Показы сайта в Алисе AI".

В начале февраля 2026г. был вебинар с Михаилом Сливинским - амбассадором Поиска Яндекса, и в рамках вебинара была озвучена просьба сделать такой инструмент. Скорее всего разработка на тот момент уже велась, потому что от просьбы до релиза прошло около 2-х месяцев. В любом случае хорошо, что такая статистика появилась.

Показы сайта в Алисе AI в вашем Яндекс,Вебмастере.

@joomlafeed

👩‍💻 ИИ-админ для 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

0 Пользователей и 1 Гость просматривают эту тему.
  • 19 Ответов
  • 2851 Просмотров
*

hemicide

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Добрый день. Пытаюсь разработать модуль для Joomla.
На странице пользователя есть логика, которая отправляет выбранные файлы через AJAX на сервер.
На сервере, в Helper.php есть метод getAjax() который должен принимать данные.
При отправке через AJAX обычный текст\массив работает. Но если отправлять FormData, то данные на сервер даже не уходят. А метод AJAX в jQuery возвращает успех, но в ответе содержится полный HTML код страницы, на которой все это находится. Метод getAjax соответственно не срабатывает.

На стороне клиента в default.php
Код
<?php defined('_JEXEC') or die;
JHtml::_('jquery.framework');
JHtml::script('modules/mod_uploadschedule/js/post.js');
?>

<div id="mod_uploadschedule">
<div id="uploadschedule">
<form action="" class="form-upload">
<input type="text" required=""><br>
<input type="file" id="files"><br>
<button type="button" class="btn btn-success" id="btn_upload">Загрузить</button>
</form>
</div>
</div>
и post.js
Код
	jQuery(document).ready(function (jQuery) {
jQuery('#btn_upload').on( 'click', function(event){

event.stopPropagation();
event.preventDefault();

if( typeof files == 'undefined' ) return;

var form = jQuery('.form-upload')[0];
var input = jQuery('#files')[0];
var data = new FormData(form);
jQuery.each( input.files, function( key, value ){
data.append( key, value );
});

var request = {
'option': 'com_ajax',
'module': 'uploadschedule',
'format': 'json',
'data'  : data
  };
jQuery.ajax({
type    : 'POST',
processData : false,
contentType : false,
data    : request,
success: function ( response, status, jqXHR ) {
if( typeof response.error === 'undefined' ){

} else {
console.log('ОШИБКА: ' + response.data );
}
},
error: function(response, jqXHR, exception) {
console.log('ОШИБКА: ' + response.responseText );
}
});

return false;
});
})

На сервере Helper.php
Код
<?php defined('_JEXEC') or die;

class modUploadscheduleHelper {
public static function getAjax() {
jimport('joomla.application.module.helper');
try {
$input  = JFactory::getApplication()->input;
$files  = $input->files->get('jform');
$post = $input->post->get('jform', array(), 'array');

var_dump($data);
var_dump($post);

//return array('status' => 'ok', 'message' => '');


if ($input->get('cmd')) {
$cmd  = $post_array['cmd'];
$data = $post_array['data'];

switch ($cmd) {
case "download" :
break;

case "set" :
break;

default:
return array('status' => 'error', 'message' => 'cmd not identify');
break;
}
}
} catch (Error $e) {
echo new JResponseJson($e->getMessage());
}
}
}

Помогите разобраться.
« Последнее редактирование: 23.10.2020, 12:03:12 от hemicide »
*

sivers

  • Живу я здесь
  • 2610
  • 363 / 0
Попробуйте подправить скрипт, чтоб получилось так:
Код
jQuery(document).ready(function (jQuery) {
jQuery('#btn_upload').on( 'click', function(event){

event.stopPropagation();
event.preventDefault();

if( typeof files == 'undefined' ) return;

var form = jQuery('.form-upload')[0];
var formData = new FormData(form);
jQuery.ajax({
type    : 'POST',
processData : false,
contentType : false,
url: '/index.php?option=com_ajax&module=uploadschedule&format=json',
data: formData,
success: function ( response, status, jqXHR ) {
if( typeof response.error === 'undefined' ){

} else {
console.log('ОШИБКА: ' + response.data );
}
},
error: function(response, jqXHR, exception) {
console.log('ОШИБКА: ' + response.responseText );
}
});

return false;
});
})
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

hemicide

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Спасибо. Напрямую работает. файл уходит на сервер. Метод getAjax срабатывает, но:
1) я не могу получить эти файлы:
Код
			$input  = JFactory::getApplication()->input;
$files  = $input->files->get('jform');
$post = $input->post->get('jform', array(), 'array');
$files или $post пустые.
2) А есть возможность отправлять вместе с FormData, свои пользовательские данные, ведь теперь в AJAX.data я сразу записываю FormData
*

sivers

  • Живу я здесь
  • 2610
  • 363 / 0
1) я не могу получить эти файлы:
Посмотрите что вообще приходит на сервер. Попробуйте там сделать:
Код
print_r($_FILES);
2) А есть возможность отправлять вместе с FormData, свои пользовательские данные
Да. У вас там 2 формы объединяются в одну отправку что ли? Попробуйте тогда сделать так:
Код
jQuery(document).ready(function (jQuery) {
jQuery('#btn_upload').on( 'click', function(event){

event.stopPropagation();
event.preventDefault();

if( typeof files == 'undefined' ) return;

var form = jQuery('.form-upload')[0];
var input = jQuery('#files')[0];
var data = new FormData(form);
jQuery.each( input.files, function( key, value ){
data.append( key, value );
});
data.append('option', 'com_ajax');
data.append('module', 'uploadschedule');
data.append('format', 'json');

jQuery.ajax({
type    : 'POST',
processData : false,
contentType : false,
data    : data,
success: function ( response, status, jqXHR ) {
if( typeof response.error === 'undefined' ){

} else {
console.log('ОШИБКА: ' + response.data );
}
},
error: function(response, jqXHR, exception) {
console.log('ОШИБКА: ' + response.responseText );
}
});

return false;
});
})
Если же отправка будет идти не по адресу - добавьте параметр url: '/index.php?option=com_ajax&module=uploadschedule&format=json', из предыдущего варианта.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

hemicide

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Добавление параметров в FormData сработал.  :D

На сервере вот что:
Код
Array([0] => Array([name] => Книга2.xls [type] => application/vnd.ms-excel [tmp_name] => C:\\Windows\\Temp\\php801C.tmp\ [error] => 0 [size] => 32768)){\"success\":true,\"message\":null,\"messages\":null,\"data\":[]}
*

sivers

  • Живу я здесь
  • 2610
  • 363 / 0
На сервере вот что:
в таком случае не получится читать инфу о переданных файлах через $files  = $input->files->get('jform');
Проверьте атрибут name в вашем <input type="file' .../> через который добавляете файлы. Там должно быть что-то вроде name="jform[myfiles]", если этого нет - добавьте и еще раз посмотрите что сервер вернет в print_r($_FILES);
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

hemicide

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
print_r($_FILES);
Код
Array(
[jform] => Array ([name] => Array ([files] => Clip2net_181018153949.png)
[type] => Array([files] => image/png\)
[tmp_name] => Array([files] => C:\\Windows\\Temp\\php7916.tmp)
[error] => Array([files] => 0)
[size] => Array([files] => 54669))

[0] => Array([name] => Certificate.png
[type] => image/png
[tmp_name] => C:\\Windows\\Temp\\php7917.tmp
[error] => 0
[size] => 777052)

[1] => Array([name] => Clip2net_181018153949.png
[type] => image/png
[tmp_name] => C:\\Windows\\Temp\\php7957.tmp
[error] => 0
[size] => 54669)
)

Получается что в $_FILES теперь какбы три элемента jform, 0, 1, но в jform всегда последний файл ( в данном случае тотже что и в 1, но с другим tmp_name)
В $files  = $input->files->get('jform'); также только последний файл
*

hemicide

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Получается что в $_FILES теперь какбы три элемента jform, 0, 1, но в jform всегда последний файл ( в данном случае тотже что и в 1, но с другим tmp_name)
В $files  = $input->files->get('jform'); также только последний файл

Из js скрипта при инициализации FormData убрал параметр, теперь имеет вид:
Код
var data = new FormData();
И элементов в массиве два, 0 и 1, без jform. Однако
Код
$files  = $input->files->get('jform');
теперь тоже пустой
*

sivers

  • Живу я здесь
  • 2610
  • 363 / 0
Из js скрипта при инициализации FormData убрал параметр, теперь имеет вид:
Код

var data = new FormData();

Так откуда ж ему теперь данные брать? )
В FormData должна быть передана форма параметром (аргументом), чтоб из ее полей (в т.ч. с файлом) вытянулись данные. А в таком виде там пусто, конечно.
Разберитесь с вашими формами и именам полей. Мне вашу форму не видно. Непонятно сколько там полей с файлами и как они названы. И почему составляется из нескольких форм, а не из одной. Получать же файлы на сервере можно и из $_FILES напрямую, главное - чтоб там не пусто было.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

hemicide

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Код
<div id="mod_uploadschedule">
<div id="uploadschedule">
<form action="" class="form-upload">
<input type="text" required=""><br>
<input type="file" id="files" name="jform[files]" multiple="multiple"><br>
<button type="button" class="btn btn-success" id="btn_upload">Загрузить</button>
</form>
</div>
</div>


Получается, если я при создании экземпляра FormData передаю ему форму, то он сам захватывает файлы которые там есть.
Либо я могу не передевать ему форму, но тогда вручную с помощью .append должен эти файлы добавить?

Мне бы подошёл второй вариант. Но тогда $files  = $input->files->get('jform'); пустой по понятным причинам, зато в $_FILES содержит все файлы. А если первый вариант, то в $_FILES только последний файл из множества выбранных

Так как же мне средствами фреймворма Joomla обработать то что в $_FILES? гдето читал что есть для этого класс JInputFiles. Или плюнуть и работать напрямую?
« Последнее редактирование: 23.10.2020, 15:07:06 от hemicide »
*

sivers

  • Живу я здесь
  • 2610
  • 363 / 0
Попробуйте первым способом (без ручного "аппенд"), имя поля поменяйте на name="test_files". В массиве $_FILES должны быть видны все переданные файлы.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Отправить файл
Код: js
var files = jQuery('#files').prop("files"),
data = new FormData();

jQuery.each(files, function (k) {
data.append("file_" + k, this);
});

data.append("total", files.length);
data.append('option', 'com_ajax');
data.append('module', 'uploadschedule');
data.append('format', 'json');

jQuery.ajax({
processData: false,
contentType: false,
dataType: "json",
method: "POST",
data: data,
success: function (result) {
// code
}
});

Получить файлы
Код: php
$app = JFactory::getApplication();

$total = $app->input->getInt('total', 0);

for($i = 0; $i < $total; $i++)
{
    $file = $app->input->files->get(
        'file_' . $i, null, 'array'
    );

    if(empty($file))
    {
        continue;
    }

    print_R($file);
}
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

hemicide

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Спасибо большое Вам за помощь. Думаю с избытком решили мою проблему!
*

sivers

  • Живу я здесь
  • 2610
  • 363 / 0
Отправить файл
Кстати, может сработать еще вариант, если сделать name, заканчивающимся на [].
Код
<input type="file" id="files" name="jform[files][]" multiple="multiple">
Тогда это data.append("file_" + k, this); не понадобится.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

hemicide

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Кстати, может сработать еще вариант, если сделать name, заканчивающимся на [].
Да, сработало. Теперь и в $_FILES и в $files  = $input->files->get('jform'); все файлы без ручного аппенда
« Последнее редактирование: 24.10.2020, 10:21:26 от hemicide »
*

imanager

  • Новичок
  • 9
  • 0 / 1
Помогите почему AJAX не отправляет файл ?
tmpl/default.php
« Последнее редактирование: 12.04.2022, 12:57:32 от imanager »
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Помогите почему AJAX не отправляет файл ?
Для начала уточните: именно файл не отправляется или вы его принять не можете?

Вы отправляете файл
Код: js
data.append("files",files);
Значит вы и принять его должны правильно!
Код: php
$files  = $input->files->get('files');
Если отправляете несколько файлов сразу, то пример отправки и приема есть чуть выше
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

imanager

  • Новичок
  • 9
  • 0 / 1
И ТО И ДРУГОЕ вобще не понятно! файл загружается по json или raw должен ??
поделитесь рабочим модулем
*

imanager

  • Новичок
  • 9
  • 0 / 1
могу денег закинуть немного)
*

sivers

  • Живу я здесь
  • 2610
  • 363 / 0
И ТО И ДРУГОЕ вобще не понятно! файл загружается по json или raw должен ??
для начала он должен отправляться. открывайте консоль браузера и в сети  смотрите пост-запрос, который AJAX генерит, на предмет - есть ли в нем файл (поток двоичных данных трудно спутать, да и по весу запроса можно понять).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Документация по разработки компонента для Joomla 3.x

Автор Aspik

Ответов: 9
Просмотров: 3749
Последний ответ 23.01.2021, 07:55:56
от hmr
Применение ajax (Аякс) в модуле Joomla

Автор tm2010

Ответов: 34
Просмотров: 5858
Последний ответ 26.09.2020, 09:38:35
от b2z
Автоматическая отправка в архив по дате

Автор Санчо

Ответов: 16
Просмотров: 2898
Последний ответ 19.09.2020, 23:09:00
от Санчо
ajax проверку на вход. В стандартном модуле входа?

Автор Dolphin4ik_1

Ответов: 4
Просмотров: 992
Последний ответ 23.07.2020, 15:03:57
от sivers
Обработка AJAX в компоненте Joomla!3

Автор balancer

Ответов: 33
Просмотров: 12715
Последний ответ 23.07.2020, 07:45:53
от Dolphin4ik_1