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

uf1976

  • Захожу иногда
  • 242
  • 6 / 5
Как сделать вместо вывода всех объявлений от пользователя просто ссылку на его профиль в CommunityBuilder?
Вроде просто должно быть, но сообразить не получается...
*

Kikasso

  • Захожу иногда
  • 99
  • 45 / 0
index.php?option=com_comprofiler&task=userProfile&user=XXX, где XXX - это ID пользователя
*

uf1976

  • Захожу иногда
  • 242
  • 6 / 5
Решение:
Находим в adsmanager.html.php :
Код
<?php 
if ($row->userid != 0)
{
if ($conf->comprofiler == 2)
   {
$target = sefRelToAbs("index.php?option=com_comprofiler&amp;task=userProfile&amp;tab=AdsManagerTab&amp;user=".$row->userid."&amp;Itemid=".$itemid);
}
   else
   {
$target = sefRelToAbs("index.php?option=$option&amp;page=show_user&amp;userid=".$row->userid."&amp;Itemid=".$itemid);
   }
echo "<a href='$target'><b>".ADSMANAGER_SHOW_OTHERS.$row->user."</b></a>";

if (($my->id == $row->userid)&&($update_possible == 1)) {
?>
Заменяем на:
Код
<?php 
if ($row->userid != 0)
{
$target = sefRelToAbs("index.php?option=com_comprofiler&task=userProfile&user=".$row->userid."&amp;Itemid=".$itemid);
echo ADSMANAGER_SHOW_USER;
echo "<a href='$target'><b>".$row->user."</b></a>";
echo "<br>";
if ($conf->comprofiler == 2)
   {
$target = sefRelToAbs("index.php?option=com_comprofiler&amp;task=userProfile&amp;tab=AdsManagerTab&amp;user=".$row->userid."&amp;Itemid=".$itemid);
}
   else
   {
$target = sefRelToAbs("index.php?option=$option&amp;page=show_user&amp;userid=".$row->userid."&amp;Itemid=".$itemid);
   }
echo "<a href='$target'><b>".ADSMANAGER_SHOW_OTHERS.$row->user."</b></a>";

if (($my->id == $row->userid)&&($update_possible == 1)) {
?>

В результате имеем ссылку на профиль разместившего объявление, плюс ссылку на все объявления от этого конкретного пользователя.
« Последнее редактирование: 21.01.2010, 09:16:08 от uf1976 »
*

AlexAl

  • Захожу иногда
  • 309
  • 13 / 0
*

Deferent

  • Осваиваюсь на форуме
  • 20
  • 3 / 0
  • учусь
Вчера мучался над аналогичной задачей для AdsManager 2.6.5
Для того, чтобы в детальном виде объявления над строкой "Посмотреть все объявления от юзер" появилась строка "Посмотреть профиль юзер" в файле www/components/com_adsmanager/views/details/tmpl/default.php
вместо:
Код
if ($this->content->userid != 0)
{     

        echo JText::_('ADSMANAGER_SHOW_OTHERS');

if ($conf->comprofiler == 2)
    {
$target = JRoute::_("index.php?option=com_comprofiler&task=userProfile&tab=AdsManagerTab&user=".$this->content->userid."&Itemid=".$this->Itemid);
}
    else
вставлено:
Код
if ($this->content->userid != 0)
{

                        $target = JRoute::_("index.php?option=com_comprofiler&task=userProfile&tab=AdsManagerTab&user=".$this->content->userid."&Itemid=".$this->Itemid);
echo 'Посмотреть профиль ';
echo "<a href='$target'><b>".$this->content->user."</b></a>";
echo "<br>";

        echo JText::_('ADSMANAGER_SHOW_OTHERS');

if ($conf->comprofiler == 2)
    {
$target = JRoute::_("index.php?option=com_comprofiler&task=userProfile&tab=AdsManagerTab&user=".$this->content->userid."&Itemid=".$this->Itemid);
}
    else

ЗЫ Если что не так, поправьте, я только учусь
*

Serafon

  • Захожу иногда
  • 55
  • 5 / 0
Доброго времени суток!
Не подскажите, как вывести ссылку на профиль CB пользователя, добавившего объявление в AdsManager 2.9.5? - способы описанные выше не работают в виду отсутствия такого кода в упомянутых файлах... Зарание спасибо за помощь!  *DRINK*
*

Serafon

  • Захожу иногда
  • 55
  • 5 / 0
Доброго времени суток!
Не подскажите, как вывести ссылку на профиль CB пользователя, добавившего объявление в AdsManager 2.9.5? - способы описанные выше не работают в виду отсутствия такого кода в упомянутых файлах... Зарание спасибо за помощь!  *DRINK*
Проблему решил методом собственных проб и ошибок!
Кому интерестно: в файле www/components/com_adsmanager/views/details/tmpl/default.php  -  примерно 67 строка

Первый вариант - убрать надпись "Просмотреть все объявления от ***" и вместо нее добавить "Посмотреть профиль ***"

вместо:
Код
<div>
<?php
if ($this->content->userid != 0)
{
echo JText::_('ADSMANAGER_SHOW_OTHERS');
$target = TLink::getUserAdsLink($this->content->userid);

    if ($conf->display_fullname == 1)
echo "<a href='$target'><b>".$this->content->fullname."</b></a>";
else
echo "<a href='$target'><b>".$this->content->user."</b></a>";

if ($this->userid == $this->content->userid) {
?>
<div>
<?php
$target = TRoute::_("index.php?option=com_adsmanager&task=write&catid=".$this->content->category."&id=".$this->content->id);
echo "<a href='".$target."'>".JText::_('ADSMANAGER_CONTENT_EDIT')."</a>";
echo "&nbsp;";
$target = TRoute::_("index.php?option=com_adsmanager&task=delete&catid=".$this->content->category."&id=".$this->content->id);
echo "<a href='".$target."'>".JText::_('ADSMANAGER_CONTENT_DELETE')."</a>";
?>
</div>
<?php
}
}
?>
</div>

вставляем

Код
<div>
<?php
if ($this->content->userid != 0)
{
$target = JRoute::_("index.php?option=com_comprofiler&task=userProfile&tab=AdsManagerTab&user=".$this->content->userid."&Itemid=".$this->Itemid);
echo 'Посмотреть профиль ';
echo "<a href='$target'><b>".$this->content->user."</b></a>";
echo "<br>";
if ($this->userid == $this->content->userid) {
?>
<div>
<?php
$target = TRoute::_("index.php?option=com_adsmanager&task=write&catid=".$this->content->category."&id=".$this->content->id);
echo "<a href='".$target."'>".JText::_('ADSMANAGER_CONTENT_EDIT')."</a>";
echo "&nbsp;";
$target = TRoute::_("index.php?option=com_adsmanager&task=delete&catid=".$this->content->category."&id=".$this->content->id);
echo "<a href='".$target."'>".JText::_('ADSMANAGER_CONTENT_DELETE')."</a>";
?>
</div>
<?php
}
}
?>
</div>

Второй вариант - оставить "Просмотреть все объявления от ***" и сверху добавить "Посмотреть профиль ***"

вместо
Код
<div>
<?php
if ($this->content->userid != 0)
{
echo JText::_('ADSMANAGER_SHOW_OTHERS');
$target = TLink::getUserAdsLink($this->content->userid);

    if ($conf->display_fullname == 1)
echo "<a href='$target'><b>".$this->content->fullname."</b></a>";
else
echo "<a href='$target'><b>".$this->content->user."</b></a>";

if ($this->userid == $this->content->userid) {
?>
<div>
<?php
$target = TRoute::_("index.php?option=com_adsmanager&task=write&catid=".$this->content->category."&id=".$this->content->id);
echo "<a href='".$target."'>".JText::_('ADSMANAGER_CONTENT_EDIT')."</a>";
echo "&nbsp;";
$target = TRoute::_("index.php?option=com_adsmanager&task=delete&catid=".$this->content->category."&id=".$this->content->id);
echo "<a href='".$target."'>".JText::_('ADSMANAGER_CONTENT_DELETE')."</a>";
?>
</div>
<?php
}
}
?>
</div>

вставляем

Код
<div>
<?php
if ($this->content->userid != 0)
{
$target = JRoute::_("index.php?option=com_comprofiler&task=userProfile&tab=AdsManagerTab&user=".$this->content->userid."&Itemid=".$this->Itemid);
echo 'Посмотреть профиль ';
echo "<a href='$target'><b>".$this->content->user."</b></a>";
echo "<br>";
echo JText::_('ADSMANAGER_SHOW_OTHERS');
$target = TLink::getUserAdsLink($this->content->userid);

    if ($conf->display_fullname == 1)
echo "<a href='$target'><b>".$this->content->fullname."</b></a>";
else
echo "<a href='$target'><b>".$this->content->user."</b></a>";

if ($this->userid == $this->content->userid) {
?>
<div>
<?php
$target = TRoute::_("index.php?option=com_adsmanager&task=write&catid=".$this->content->category."&id=".$this->content->id);
echo "<a href='".$target."'>".JText::_('ADSMANAGER_CONTENT_EDIT')."</a>";
echo "&nbsp;";
$target = TRoute::_("index.php?option=com_adsmanager&task=delete&catid=".$this->content->category."&id=".$this->content->id);
echo "<a href='".$target."'>".JText::_('ADSMANAGER_CONTENT_DELETE')."</a>";
?>
</div>
<?php
}
}
?>
</div>

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

Редактировать все объявления

Автор den_ko

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

Автор efimov777

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

Автор guardnext

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

Автор kozhenevsky

Ответов: 0
Просмотров: 3120
Последний ответ 15.02.2018, 12:08:29
от kozhenevsky
Лечим кнопку "Delete from favorites" на странице объявления. AdsManager 3.1.11

Автор Mick_20

Ответов: 1
Просмотров: 3209
Последний ответ 24.12.2017, 22:28:14
от vadim73