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

max_1985

  • Давно я тут
  • 611
  • 56 / 0
Хочу реализовать удаление всех телефонов из описания и заголовка при добавлении объявления, но не знаю к какой функции это прекрипить
Подскажите пожалуйста и подравте если что не так.
Код
if ($key=='ad_text' or $key=='ad_headline') {
$_POST[$key]=preg_replace("/(?<!\w)(?:(?:(?:(?:\+?3)?8\W{0,3})?0\W{0,3})?[34569]\s?\d[^\w,;(\+]{0,3})?\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d(?!(\W?\d))/x",'', $_POST[$key]);
}
« Последнее редактирование: 23.10.2013, 18:00:47 от max_1985 »
*

grinat

  • Захожу иногда
  • 356
  • 34 / 2
Хочу реализовать удаление все телефоны из описания и заголовка при добавлении объявления, но не знаю к какой функции это прекрипить
Подскажите пожалуйста и подравте если что не так.
Код
if ($key=='ad_text' or $key=='ad_headline') {
$_POST[$key]=preg_replace("/(?<!\w)(?:(?:(?:(?:\+?3)?8\W{0,3})?0\W{0,3})?[34569]\s?\d[^\w,;(\+]{0,3})?\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d(?!(\W?\d))/x",'', $_POST[$key]);
}
В controller.php функция save, в самое начало
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
В controller.php функция save, в самое начало
Что-то не так, не удаляет, может что еще дописать надо?
*

grinat

  • Захожу иногда
  • 356
  • 34 / 2
Что-то не так, не удаляет, может что еще дописать надо?
Как выглядит полный код, так?
foreach($_POST as $key=>$value){
<...>$key=='ad_text' or $key=='ad_h<...>
}
Если да, то в регулярке могут быть огрехи
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
Как выглядит полный код, так?
foreach($_POST as $key=>$value){
<...>$key=='ad_text' or $key=='ad_h<...>
}
Если да, то в регулярке могут быть огрехи

Код
foreach ( $_POST as $key => $value )
{
$_POST[$key]=ereg_replace('<', '<', $_POST[$key]);
$_POST[$key]=ereg_replace('>', '>', $_POST[$key]);

if ($key=='ad_text' or $key=='ad_headline') {

$_POST[$key]=preg_replace("/(?<!\w)(?:(?:(?:(?:\+?3)?8\W{0,3})?0\W{0,3})?[34569]\s?\d[^\w,;(\+]{0,3})?\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d(?!(\W?\d))/x",'', $_POST[$key]);

}
}
так

а регулярка вроде правильная, взял здесь http://habrahabr.ru/post/110731/
на другом сайте работает.
« Последнее редактирование: 13.05.2013, 18:06:58 от max_1985 »
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
В controller.php функция save, в самое начало
а может лучше в components/com_adsmanager/views/edit/tmpl/default.php?
там где foreach($this->fields as $field)
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
За помощь подкину немного WMR  ^-^
Пишите в личку!
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
Код
$_POST[$key]=ereg_replace('<', '<', $_POST[$key]);
$_POST[$key]=ereg_replace('>', '>', $_POST[$key]);
"или я тупой, или лыжи не едут", но не понял сути этих строк
Код
if ($key=='ad_text' or $key=='ad_headline') {

$_POST[$key]=preg_replace("/(?<!\w)(?:(?:(?:(?:\+?3)?8\W{0,3})?0\W{0,3})?[34569]\s?\d[^\w,;(\+]{0,3})?\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d(?!(\W?\d))/x",'', $_POST[$key]);

}
а не проще было изменять переменные вне цикла?
Код
$_POST['ad_text']=preg_replace("/(?<!\w)(?:(?:(?:(?:\+?3)?8\W{0,3})?0\W{0,3})?[34569]\s?\d[^\w,;(\+]{0,3})?\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d(?!(\W?\d))/x",'', $_POST['ad_text']);
$_POST['ad_headline']=preg_replace("/(?<!\w)(?:(?:(?:(?:\+?3)?8\W{0,3})?0\W{0,3})?[34569]\s?\d[^\w,;(\+]{0,3})?\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d(?!(\W?\d))/x",'', $_POST['ad_headline']);
В Joomla для безопасности используется свой класс (JRequest) для работы с глобальными массивами ($_GET, $_POST, $_FILES, $_COOKIE и т.д.)

Ну а теперь по делу:
Изменение значений переменных в массиве $_POST ни к чему не приведёт, как ни старайтесь (достаточно глянуть код функции сохранения объявления, чтобы стало всё понятно)
В общем как и говорил ув. grinat, открываете controller.php и в функции save ищете строки
Код
		$content->bindContent(JRequest::get( 'post' ),JRequest::get( 'files' ),
  $conf,$this->getModel("adsmanager"),$plugins);

if (function_exists('bindPaidSystemContent')) {
bindPaidSystemContent($content,
  JRequest::get( 'post' ),JRequest::get( 'files' ),
  $conf,$this->getModel("adsmanager"));
}
после них вставляете
Код
$content->data['fields']['ad_text']=preg_replace("/(?<!\w)(?:(?:(?:(?:\+?3)?8\W{0,3})?0\W{0,3})?[34569]\s?\d[^\w,;(\+]{0,3})?\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d(?!(\W?\d))/x",'', $content->data['fields']['ad_text']);
$content->data['fields']['ad_headline']=preg_replace("/(?<!\w)(?:(?:(?:(?:\+?3)?8\W{0,3})?0\W{0,3})?[34569]\s?\d[^\w,;(\+]{0,3})?\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d(?!(\W?\d))/x",'', $content->data['fields']['ad_headline']);
теперь работоспособность будет зависеть только от правильности регулярки
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
Все четко работает!
Огромное спасибо!

Номер кошелька скиньте, как обещал с меня магар. Или могу поделиться AJAX Search Module или Report This Ad Plugin ^-^

Еще все таки а если с условием, как правильно, я просто еще хочу пару регулярок запихнуть?
« Последнее редактирование: 17.05.2013, 09:22:02 от max_1985 »
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
« Последнее редактирование: 17.05.2013, 10:19:06 от max_1985 »
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
Цитировать
Номер кошелька скиньте, как обещал с меня магар. Или могу поделиться AJAX Search Module или Report This Ad Plugin
скиньте модуль поиска да и хватит
Цитировать
Еще все таки а если с условием, как правильно, я просто еще хочу пару регулярок запихнуть?
Поподробней объясните, "недопетрю" зачем какие-то условия вставлять
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
скиньте модуль поиска да и хватитПоподробней объясните, "недопетрю" зачем какие-то условия вставлять
чтоб по несколько раз не писать одно и тоже
например
if ($content=='ad_text' or $content=='ad_headline') {
$content->data['fields']=preg_replace("регулярка телефона",'', $content->data['fields']);
$content->data['fields']=preg_replace("регулярка e-mail",'', $content->data['fields']);
$content->data['fields']=preg_replace("регулярка веб-сайт",'', $content->data['fields']);
}
поправьте пожалуйста!
Куда кидать модуль?
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
скорость выполнения будет самой высокой как раз если прописывать регулярку для каждого поля, если же всё-таки лень писать, то можно пройтись по массиву также как и Вы хотели сделать с масивом $_POST
Код
foreach($content->data['fields'] as $key=>$value)
if ($key=='ad_text' or $key=='ad_headline')
$content->data['fields'][$key]=...
...
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
скорость выполнения будет самой высокой как раз если прописывать регулярку для каждого поля, если же всё-таки лень писать, то можно пройтись по массиву также как и Вы хотели сделать с масивом $_POST
спасибо за совет!
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
эх не нарадуюсь 50% проблем с администрированием объявлений решено!  :D
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
Хочу еще реализовать такую штуку, чтоб при загрузке маленьких картинок (например 150Х150) выводилось сообщение (В выбранных Вами файлах присутствовали картинки маленького размера) и чтоб они не попали в список загружаемых.
На php представляю как это сделать, но в данном случае это не прокатит.
А на java не очень, хотя куда примерно вставить код понимаю:
/components/com_adsmanager/views/edit/tmpl/default.php
где-то здесь
Код
 FilesAdded: function(up, files) {



maxnewimages = max_total_file_count - current_uploaded_files_count;
// Check if the size of the queue is bigger than max_file_count
   if(up.files.length > maxnewimages)
   {
       // Removing the extra files
       while(up.files.length > maxnewimages)
       {
           if(up.files.length > maxnewimages)
            up.removeFile(up.files[maxnewimages]);
       }
       alert('<?php echo JText::_(sprintf("Max %s Files",$this->conf->nb_images))?>');
   }

   if (typeof updatePaidCurrentFileCount != "undefined") {
    updatePaidCurrentFileCount(current_uploaded_files_count+nb_files_in_queue,
      current_uploaded_files_count+up.files.length);
   }
   nb_files_in_queue = up.files.length;
       setCurrentFileCount();
},
Помогите пожалуйста разобраться!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ерунда с поворотом картинок

Автор MakGrouman

Ответов: 1
Просмотров: 672
Последний ответ 06.05.2026, 11:12:19
от sivers
Редактировать все объявления

Автор den_ko

Ответов: 32
Просмотров: 18035
Последний ответ 25.11.2021, 10:43:38
от FlexNL
Заглушки с http://placehold.it вместо картинок в списке объявлений

Автор efimov777

Ответов: 6
Просмотров: 7665
Последний ответ 12.04.2020, 07:25:59
от Pavel
Слетают категории объявления

Автор guardnext

Ответов: 1
Просмотров: 6093
Последний ответ 09.07.2019, 10:10:59
от guardnext
AdsManger не удаляет объявления

Автор kozhenevsky

Ответов: 0
Просмотров: 3119
Последний ответ 15.02.2018, 12:08:29
от kozhenevsky