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

soldat

  • Захожу иногда
  • 80
  • 3 / 0
Как сделать прокрутку изображений (вертикальную). Может кто реализует за деньги? Или скинимся на фриланс?

За место стандартных картинок было так:
Чтобы показывалось только 3 картинки, остальные при прокрутки
при нажатии на картинку увеличивалась


« Последнее редактирование: 30.04.2010, 02:44:05 от soldat »
*

DT3

  • Осваиваюсь на форуме
  • 44
  • 5 / 0
вот здесь есть уже готовые решения (подобрал 2 похожих на ваше)
http://www.dynamicdrive.com/dynamicindex4/cmotiongallery2.htm
http://www.dynamicdrive.com/dynamicindex4/stepcarousel.htm
попробовал вариант cmotiongallery2 прикрутить ради интереса, все работает, правда тормозит немного
*

soldat

  • Захожу иногда
  • 80
  • 3 / 0
Я так понимаю за вывод картинок отвечает этот код:
Код
  				<div class="adsmanager_ads_image">
<?php
$image_found =0;
$nbimages = $conf->nb_images;
if (function_exists("getMaxPaidSystemImages"))
{
$nbimages += getMaxPaidSystemImages();
}
for($i=1;$i < $nbimages + 1;$i++)
{
$ext_name = chr(ord('a')+$i-1);
$pic = $mosConfig_absolute_path."/images/$option/photo/".$row->id.$ext_name."_t.jpg";
$piclink = $mosConfig_live_site."/images/$option/photo/".$row->id.$ext_name.".jpg";

if (file_exists($pic))
{
    switch($conf->image_display)
    {
case 'popup':
echo "<a href=\"javascript:popup('$piclink');\"><img src='".$mosConfig_live_site."/images/$option/photo/".$row->id.$ext_name."_t.jpg' alt='".htmlspecialchars(stripslashes($row->ad_headline),ENT_QUOTES)."' /></a>";
break;
case 'lightbox':
echo "<a href='".$piclink."' rel='lightbox[roadtrip$row->id]'><img src='".$mosConfig_live_site."/images/$option/photo/".$row->id.$ext_name."_t.jpg' alt='".htmlspecialchars(stripslashes($row->ad_headline),ENT_QUOTES)."' /></a>";
break;
case 'lytebox':
echo "<a href='".$piclink."' rel='lytebox[roadtrip$row->id]'><img src='".$mosConfig_live_site."/images/$option/photo/".$row->id.$ext_name."_t.jpg' alt='".htmlspecialchars(stripslashes($row->ad_headline),ENT_QUOTES)."' /></a>";
break;
case 'highslide':
echo "<a id='thumb".$row->id."' class='highslide' onclick='return hs.expand (this)' href='".$piclink."'><img src='".$mosConfig_live_site."/images/$option/photo/".$row->id.$ext_name."_t.jpg' alt='".htmlspecialchars(stripslashes($row->ad_headline),ENT_QUOTES)."' /></a>";
break;
case 'default':
default:
echo "<a href='".$piclink."' target='_blank'><img src='".$mosConfig_live_site."/images/$option/photo/".$row->id.$ext_name."_t.jpg' alt='".htmlspecialchars(stripslashes($row->ad_headline),ENT_QUOTES)."' /></a>";
break;
}
$image_found = 1;
}
}
if (($image_found == 0)&&($conf->nb_images >  0))
{
if ((ADSMANAGER_NOPIC != "")&&(file_exists($mosConfig_absolute_path."/components/$option/images/".ADSMANAGER_NOPIC)))
echo '<img align="center" src="'.$mosConfig_live_site.'/components/'.$option.'/images/'.ADSMANAGER_NOPIC.'" alt="nopic" /></a>';
else
echo '<img align="center" src="'.$mosConfig_live_site.'/components/'.$option.'/images/nopic.gif" alt="nopic" />';
}
?>
</div>


А как прикрутить новый код:
Код
<div style="overflow:hidden;">
<div id="motioncontainer" style="width:150px; height:300px; overflow:hidden; position: relative;">
<div id="motiongallery" style="position:absolute; left:0; top:0;">

<!--Gallery Contents below-->

<a href="javascript:enlargeimage('dynamicbook1.gif')"><img src="dynamicbook1.gif" border=1></a><br />
<a href="javascript:enlargeimage('dynamicbook1.gif', 300, 300)"><img src="dynamicbook1.gif" border=1></a><br />
<a href="http://www.dynamicdrive.com"><img src="dynamicbook1.gif" border=1></a><br />
<a href="#"><img src="dynamicbook1.gif" border=1></a><br />
<a href="#"><img src="dynamicbook1.gif" border=1></a><br />
<a href="#"><img src="dynamicbook1.gif" border=1></a><br />
<a href="#"><img src="dynamicbook1.gif" border=1></a><br />
<a href="#"><img src="dynamicbook1.gif" border=1></a><br />
<a href="#"><img src="dynamicbook1.gif" border=1></a>

<!--End Gallery Contents-->

</div>
</div>
</div>
*

soldat

  • Захожу иногда
  • 80
  • 3 / 0
DT3 СПАСИБО!

Методом тыка разобрался!  


Код
<!-- Gallery Contents below  -->
<div style="overflow:hidden;">
<div id="motioncontainer" style="width:150px; height:300px; overflow:hidden; position: relative;">
<div id="motiongallery" style="position:absolute; left:0; top:0;">
<?php
$image_found =0;
$nbimages = $conf->nb_images;
if (function_exists("getMaxPaidSystemImages"))
{
$nbimages += getMaxPaidSystemImages();
}
for($i=1;$i < $nbimages + 1;$i++)
{
$ext_name = chr(ord('a')+$i-1);
$pic = $mosConfig_absolute_path."/images/$option/photo/".$row->id.$ext_name."_t.jpg";
$piclink = $mosConfig_live_site."/images/$option/photo/".$row->id.$ext_name.".jpg";

if (file_exists($pic))
{
    switch($conf->image_display)
    {
case 'popup':
echo "<a href=\"javascript:popup('$piclink');\"><img src='".$mosConfig_live_site."/images/$option/photo/".$row->id.$ext_name."_t.jpg' alt='".htmlspecialchars(stripslashes($row->ad_headline),ENT_QUOTES)."' /></a>";
break;
case 'lightbox':
echo "<a href='".$piclink."' rel='lightbox[roadtrip$row->id]'><img src='".$mosConfig_live_site."/images/$option/photo/".$row->id.$ext_name."_t.jpg' alt='".htmlspecialchars(stripslashes($row->ad_headline),ENT_QUOTES)."' /></a>";
break;
case 'lytebox':
echo "<a href='".$piclink."' rel='lytebox[roadtrip$row->id]'><img src='".$mosConfig_live_site."/images/$option/photo/".$row->id.$ext_name."_t.jpg' alt='".htmlspecialchars(stripslashes($row->ad_headline),ENT_QUOTES)."' /></a>";
break;
case 'highslide':
echo "<a id='thumb".$row->id."' class='highslide' onclick='return hs.expand (this)' href='".$piclink."'><img src='".$mosConfig_live_site."/images/$option/photo/".$row->id.$ext_name."_t.jpg' alt='".htmlspecialchars(stripslashes($row->ad_headline),ENT_QUOTES)."' /></a>";
break;
case 'default':
default:
echo "<a href='".$piclink."' target='_blank'><img src='".$mosConfig_live_site."/images/$option/photo/".$row->id.$ext_name."_t.jpg' alt='".htmlspecialchars(stripslashes($row->ad_headline),ENT_QUOTES)."' /></a>";
break;
}
$image_found = 1;
}
}
if (($image_found == 0)&&($conf->nb_images >  0))
{
if ((ADSMANAGER_NOPIC != "")&&(file_exists($mosConfig_absolute_path."/components/$option/images/".ADSMANAGER_NOPIC)))
echo '<img align="center" src="'.$mosConfig_live_site.'/components/'.$option.'/images/'.ADSMANAGER_NOPIC.'" alt="nopic" /></a>';
else
echo '<img align="center" src="'.$mosConfig_live_site.'/components/'.$option.'/images/nopic.gif" alt="nopic" />';
}
?>
</div>
</div>
</div>
<!-- End Gallery Contents -->
*

aleks43127

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

Как сделать сортировку объявдений в AdsManager

Автор Olegarh

Ответов: 9
Просмотров: 16461
Последний ответ 03.06.2018, 22:59:57
от Sabotage
AdsManager - как сделать несколько адресов?

Автор Ksenia2009

Ответов: 0
Просмотров: 12131
Последний ответ 21.04.2018, 15:13:44
от Ksenia2009
Как сделать drop down меню на странице объявлений Contents List в AdsManager?

Автор fadsergc

Ответов: 0
Просмотров: 1887
Последний ответ 13.03.2017, 01:25:00
от fadsergc
Заказчик попросил чтобы поле добавления изображений было обязательным

Автор suor

Ответов: 6
Просмотров: 2130
Последний ответ 10.12.2016, 19:59:58
от Sabotage
Как сделать меню категорий сквозным?

Автор kozhenevsky

Ответов: 1
Просмотров: 1835
Последний ответ 30.08.2016, 07:23:44
от biper