Новости Joomla

Process Forge — фреймворк для создания AI-процессов.

Process Forge — фреймворк для создания AI-процессов.

На новогодних каникулах 2026 в одном из чатов Joomla-сообщества коллега по цеху поделился промптом для ИИ-агента и результатом этого промпта. За неделю до этого он впервые попробовал Gemini CLI. Я до этого ИИ пользовался только в веб версиях и в целом меня это устраивало. Увидев простыню текста, запрос в CLI и простыню ответа первое, что меня охватило: "Я НЕ ХОЧУ вот это всё изучать! Опять что-то новое, надоело...".

Потом были стадии проб и ошибок, попыток использовать готовые пакеты community skills с гитхаба с ролевым внушением "ты супер-пупер мега-бэкенд-Joomla разработчик с 40-летним опытом, сделай мне красиво". Где-то в середине этого полугодия я стал формализовать свои процессы (а это не только разработка, но и SEO, аналитика, бизнес-аналитика, проработка и выстраивание процессов и т.д., но в итоге это, как правило, или связано с или ведёт к сайту на Joomla). Формализация привела к моему пониманию некоторых базисов, которые общие для всех процессов. Об этом чуть ниже.

Теперь я хочу представить на суд уважаемой публике свои наработки по фреймворку для создания формализованных процессов работы для ИИ-агентов - Process Forge.

- Читать статью на Хабре
- Process Forge (GitHub)

@joomlafeed

Компонент Joomla 6: Генератор LLMs.txt.

Компонент Joomla 6: Генератор LLMs.txt.

Компонент Joomla 6: Генератор LLMs.txt.

Ещё один генератор ИИ-файлов llms.txt и llms-full.txt.

Основные особенности/возможности компонента:

  • Генерация по стандарту: Автоматическое создание файла-визитки llms.txt и расширенной версии llms-full.txt с аннотированным списком материалов.
  • Интеллектуальная работа с контентом: Компонент использует мета-описания (Meta Description) из статей и пунктов меню, превращая SEO-настройки сайта в качественный контекст для нейросетей.
  • Просмотреть результат генерации файлов можно сразу в рабочей области компонента. После внесения корректив (через Настройки компонента. При отладке лучше открыть три вкладки в браузере: Настройка — Геренация/Превью — Список Материалов/Категории/Меню.) — проводим перегенерацию, смотрим результат до полной «победы».
  • Автоматизация и безопасность: Синхронизация с sitemap.xml, группировка по категориям и автоматическое создание резервных копий (.bak) при каждой генерации.
  • Гибкое управление: Возможность исключения определенных категорий и/или статей и/или пунктов меню, а также простая настройка через стандартную админпанель Joomla.
  • Подробное руководство/справка: Пошаговая инструкция для пользователя в Настройках компонента для редакторов с базовым знанием администрирования Joomla.

👉 Важно учесть.
1️⃣ Компонент Генератор LLMs.txt изначально составляет базовый список ссылок на основе sitemap.xml и сверяется с ним на предмет: запрета индексации url в robots.txt, тегов noinex/nofollow. Это экономит время на проверку «закрыть от индексации», поскольку компонент генерации Sitemap.xml уже реализовал эту задачу. Посему, формирование ссылок для ИИ имеет комплексный подход, составление грамотного/валидного/релевантного sitemap.xml никто не отменял.

2️⃣ Тексты-описания ссылок формируются из Meta Description com_content (только компонент Материалы) и выбранных пользователем Меню сайта. Важно, чтобы Meta Description были уникальными и релевантными, соответствовали базовому seo. Составленные «на отшибись» Description для ИИ — «не катит» (впрочем, для поисковых систем они тоже «не канали»).

Разработчик - участник нашего сообщества Александр Кузнецов (@newvksan).

Страница расширения

@joomlafeed

#joomla #ии #ai

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

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Ну точнее проблема не в них, а непосредственно в поиска по полям типа multicheckbox и multiselect.

Короче есть у меня такие поля в объявлениях. При наполнении объявления они имеют тип checkbox, а для поиска выводятся в виде выпадающего списка.

Так вот проблема в том что они в той части компонента, которая отвечает за поиск объявлений, обрабатываются как-то неправильно.

Подробнее:
поле имеет значение rus, en, ua
пытаюсь искать по значению rus
включил отладку в Joomla и в запросе вижу вот такую вот картину:

Код
SELECT adext.*, a.*, p.name as parent, p.id as parentid, c.name as cat, c.id as catid,u.username as user,u.name as fullname  
  FROM acatf_adsmanager_ads as a
  LEFT JOIN acatf_paidsystem_ads as adext
  ON a.id = adext.id  
  INNER JOIN acatf_adsmanager_adcat as adcat
  ON adcat.adid = a.id  
  LEFT JOIN acatf_users as u
  ON a.userid = u.id  
  INNER JOIN acatf_adsmanager_categories as c
  ON adcat.catid = c.id  
  LEFT JOIN acatf_adsmanager_categories as p
  ON c.parent = p.id  
  WHERE  1  
  [b]AND (a.ad_poliglot LIKE '%,r,%' )[/b]
  AND  a.published = 1
  AND c.published = TRUE  
  AND c.id IN (10,1,2,3,4,5,6,7,8,9)  
  GROUP BY a.id
  ORDER BY a.date_created DESC ,a.id  DESC
  LIMIT 0, 20

 AND (a.ad_poliglot LIKE '%,r,%' )
почему то в запросе нет запрошенyого значения rus, а только буковка r

полез разбираться, нашел место где формируется этот запрос
находиться это счастье в файле /administrator/components/com_adsmanager/models/field.php
и выглядит этот участок кода вот так:

Код
foreach($fields as $fsearch){
switch($fsearch->type)
{
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
if ($i == 0)
$search .= " AND (";
if (version_compare(JVERSION,'1.7.0','<')) {
                            $search .= "a.$fsearch->name LIKE '%,".$this->_db->getEscaped($value[$i],true).",%'";
                        }else{
                            $search .= "a.$fsearch->name LIKE '%,".$this->_db->escape($value[$i],true).",%'";
                        }
if ($i < $nb - 1)
$search .= " OR ";
else
$search .= " )";
}
break;
            ...

Может кто пояснит мне, почему в запрос не попадает значение, выбранное в выпадающем списке, а на его месте оказывается буковка r?

Забивал приведенный выше запрос непосредственно в phpMyAdmin, и если буковку r заменить на rus то все норм ищется.

В чем проблема? Помогите! !
« Последнее редактирование: 13.05.2016, 16:28:08 от orsy »
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
ПОБЕДИЛ!

Проблема была в том, что оператор switch в качестве аргумента case принимал тип поля, который был указан при создании поля в как основной, а нужно было ему передать тип, который был указан как тип поля для поиска.

Теперь все заработало!

Для тех кому интересно вот исправленный код

Код

foreach($fields as $fsearch){
$searchTypeVal = json_decode(JRequest::getVar( $fsearch->name, array() ));
//switch($fsearch->type)
switch($searchTypeVal->searchtype_render)
{
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
if ($i == 0)
$search .= " AND (";
if (version_compare(JVERSION,'1.7.0','<')) {
                            $search .= "a.$fsearch->name LIKE '%,".$this->_db->getEscaped($value[$i],true).",%'";
                        }else{
                            $search .= "a.$fsearch->name LIKE '%,".$this->_db->escape($value[$i],true).",%'";
                        }
if ($i < $nb - 1)
$search .= " OR ";
else
$search .= " )";
}
break;
...

*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Фигню я какую-то намутил (( не работает пока поиск, копаю дальше, ибо получить тип поля не получилось пока что...
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Короче вот будет самое правильное как показано ниже. Пришлось добавить еще один кейс обработки поля на тот случай когда изначально тип полу мультивыборный, а тип для поиска одиночная выпадашка + добавил под это логику

Код

function getSearchFieldsSql($fields)
    {
    if (isset($this->searchSQL)&&($this->searchSQL != ""))
    return $this->searchSQL;
   
    $search = "";
$plugins = $this->getPlugins();
foreach($fields as $fsearch){
$searchTypeRender = $fsearch->options->searchtype_render;
if($fsearch->type == 'multicheckbox' || $fsearch->type == 'multiselect'){
if($searchTypeRender == 'select'){
$searchTypeRender = 'selecttosheck';
}
}
if(!$searchTypeRender){
$searchTypeRender = $fsearch->type;
}
//switch($fsearch->type)
switch($searchTypeRender)
{
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
if ($i == 0)
$search .= " AND (";
if (version_compare(JVERSION,'1.7.0','<')) {
                            $search .= "a.$fsearch->name LIKE '%,".$this->_db->getEscaped($value[$i],true).",%'";
                        }else{
                            $search .= "a.$fsearch->name LIKE '%,".$this->_db->escape($value[$i],true).",%'";
                        }
if ($i < $nb - 1)
$search .= " OR ";
else
$search .= " )";
}
break;

case 'selecttosheck':
$value = JRequest::getVar( $fsearch->name, "");
if ($value != ""){
if (version_compare(JVERSION,'1.7.0','<')) {
$search .= " AND ( a.$fsearch->name LIKE '%,".$this->_db->getEscaped($value,true).",%' )";
}else{
$search .= " AND ( a.$fsearch->name LIKE '%,".$this->_db->escape($value,true).",%' )";
}
}
break;
...

« Последнее редактирование: 17.05.2016, 23:29:00 от orsy »
*

Ramil8009

  • Захожу иногда
  • 147
  • 1 / 1
У меня тоже не работает поиск, указанный код проблему не решил. У вас работает?
*

moonaway

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Указывайте версию, пожалуйста...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с RSS

Автор uf1976

Ответов: 17
Просмотров: 8918
Последний ответ 14.07.2020, 12:31:40
от khan-alex
Проблема с изображениями

Автор ExpertZews

Ответов: 0
Просмотров: 1528
Последний ответ 26.07.2016, 21:08:12
от ExpertZews
Проблема с объявлениями на русском - AdsManager

Автор svkpro

Ответов: 24
Просмотров: 5897
Последний ответ 13.10.2015, 12:26:18
от IzrA
Проблема в фильтре AdsManager - mod_adsmanager_search

Автор Pavel_H

Ответов: 0
Просмотров: 1529
Последний ответ 04.09.2015, 19:51:07
от Pavel_H
Проблема AdsManager + gmap

Автор damirkazan

Ответов: 0
Просмотров: 1603
Последний ответ 29.08.2015, 19:06:06
от damirkazan