Новости 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 Ответов
  • 2640 Просмотров
*

leha111

  • Захожу иногда
  • 226
  • 0 / 0
Учусь делать компоненты.

https://mb4.ru/cms/joomla4/724-developing-a-basic-component-for-joomla-4.html

schooltechcontent.xml
Код
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" method="upgrade">
<!-- атрибут 'version' для тега расширения больше не используется -->
 
    <name>SchoolTechContent</name>
    <!-- Следующие элементы являются необязательными и не содержат ограничений на форматирование -->
    <creationDate>Janiary 2022</creationDate>
    <!-- Фиктивный автор, не стесняйтесь заменять его в любом месте, где вы его видите -->
    <author></author>
    <authorUrl></authorUrl>
    <copyright></copyright>
    <license></license>
    <!-- Строка 'version' записывается в таблицу компонентов -->
    <version>0.0.1</version>
    <!-- Описание является необязательным и по умолчанию используется имя сомпонента -->
    <description>
        Schootech content
    </description>
 
    <!-- Это пространство имен PHP, в котором организован
    код расширения. Он должен следовать этому формату:
   
    Vendor\Component\ComponentName
 
    "Vendor" может быть названией компании или вашим собственным именем
   
    Раздел "ComponentName" ДОЛЖЕН соответствовать имени, используемому
    везде для вашего компонента. Каким бы ни было имя этого XML-файла,
    пространство имен должно совпадать (заглавные/прописные буквы не учитываются).
    -->
    <namespace path="src/">MuCompani\Component\schooltechcontent</namespace>
           
    <administration>
        <!-- Ссылка, которая появится в меню админки Joomla "Components" -->
        <menu link="index.php?option=com_schooltechcontent">SchoolTech</menu>
        <!-- Список файлов и папок для копирования.
             Обратите внимание на атрибут "folder".
             Это имя папки в пакете компонентов для копирования в CMS Joomla 4. -->
        <files folder="admin/">
            <folder>services</folder>
            <folder>src</folder>
            <folder>tmpl</folder>
        </files>
    </administration>
 
</extension>

admin/services/provider.php
Код
<?php

defined('_JEXEC') or die;

use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface;
use Joomla\CMS\Extension\ComponentInterface;
use Joomla\CMS\Extension\MVCComponent;
use Joomla\CMS\Extension\Service\Provider\ComponentDispatcherFactory;
use Joomla\CMS\Extension\Service\Provider\MVCFactory;
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;

return new class implements ServiceProviderInterface {

    public function register(Container $container): void {
        $container->registerServiceProvider(new MVCFactory('\\MuCompani\\Component\\SchoolTechContent'));
        $container->registerServiceProvider(new ComponentDispatcherFactory('\\MuCompani\\Component\\SchoolTechContent'));
        $container->set(
            ComponentInterface::class,
            function (Container $container) {
                $component = new MVCComponent($container->get(ComponentDispatcherFactoryInterface::class));
                $component->setMVCFactory($container->get(MVCFactoryInterface::class));

                return $component;
            }
        );
    }
};

admin/src/Controller/DisplayController.php
Код
<?php

namespace MuCompani\Component\schooltechcontent\Administrator\Controller;

defined('_JEXEC') or die;

use Joomla\CMS\MVC\Controller\BaseController;


/**
 * Контроллер по умолчанию компонента SchoolTechContent
 *
 * @package     Joomla.Administrator
 * @subpackage  com_schooltechcontent
 */
class DisplayController extends BaseController {
    /**
     * Представление по умолчанию для метода отображения.
     *
     * @var string
     */
    protected $default_view = 'schoolcontent';

    public function display($cachable = false, $urlparams = array()) {
        return parent::display($cachable, $urlparams);
    }

}

admin/src/View/SchoolContent/HtmlView.php
Код
<?php

namespace MuCompani\Component\schooltechcontent\Administrator\Controller;

defined('_JEXEC') or die;

use Joomla\CMS\MVC\Controller\BaseController;


/**
 * Контроллер по умолчанию компонента SchoolTechContent
 *
 * @package     Joomla.Administrator
 * @subpackage  com_schooltechcontent
 */
class DisplayController extends BaseController {
    /**
     * Представление по умолчанию для метода отображения.
     *
     * @var string
     */
    protected $default_view = 'schoolcontent';

    public function display($cachable = false, $urlparams = array()) {
        return parent::display($cachable, $urlparams);
    }

}

admin/tmpl/schoolcontent/default.php
Код
<?php

namespace MuCompani\Component\schooltechcontent\Administrator\View\SchoolContent;

defined('_JEXEC') or die;

use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;

/**
 * @package     Joomla.Administrator
 * @subpackage  com_schooltechcontent
 *
 * [member=126442]copyright[/member]   Copyright (C) 2021 John Smith. All rights reserved.
 * @license     GNU General Public License version 3; see LICENSE
 */

/**
 * Основной вид в админке "SchoolTechContent"
 */
class HtmlView extends BaseHtmlView {

    /**
     * Отображение основного вида "SchoolTechContent"
     *
     * @param   string  $tpl  Имя файла шаблона для анализа; автоматический поиск путей к шаблону.
     * @return  void
     */
    function display($tpl = null) {
        parent::display($tpl);
    }


}

Собираю все это в архив com_schooltechcontent.zip и устанавливаю. В итоге, в меню компонента выводится

Некорректный класс контроллера: display

При копипасте из примера все работает нормально.

Где я ошибся (подозреваю, что где-то в admin/src/View/SchoolContent/HtmlView.php)?



*

ProtectYourSite

  • Живу я здесь
  • 2383
  • 141 / 4
  • Безопасность вебсайтов
Re: Ошибка при создании компонента
« Ответ #1 : 28.01.2022, 15:34:22 »
admin/src/View/SchoolContent/HtmlView.php

Код
namespace MuCompani\Component\schooltechcontent\Administrator\View\SchoolContent;

admin/tmpl/schoolcontent/default.php

Вообще убрать все и выводить только верстку,  к примеру
Код
	<h2>Hello world!</h2>
*

leha111

  • Захожу иногда
  • 226
  • 0 / 0
Re: Ошибка при создании компонента
« Ответ #2 : 31.01.2022, 07:53:24 »
admin/src/View/SchoolContent/HtmlView.php

И чем это отличается от того, что я написал ? Или это в смысле, что с ним что-то не так ? А что именно ?

Я пробовал в этом файле только эту строчку и оставить, но от опять выводит неверный класс display
« Последнее редактирование: 31.01.2022, 08:24:18 от leha111 »
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Ошибка при создании компонента
« Ответ #3 : 31.01.2022, 10:32:04 »
admin/src/View/SchoolContent/HtmlView.php

И чем это отличается от того, что я написал ? Или это в смысле, что с ним что-то не так ? А что именно ?

Я пробовал в этом файле только эту строчку и оставить, но от опять выводит неверный класс display
admin/tmpl/schoolcontent/default.php

Здесь только вёрстку оставить, это же макет по сути. Там не должно быть классов.
*

leha111

  • Захожу иногда
  • 226
  • 0 / 0
Re: Ошибка при создании компонента
« Ответ #4 : 31.01.2022, 12:13:55 »
Косяк ! То, что записано, как admin/tmpl/schoolcontent/default.php - это, на самом деле, admin/src/View/SchoolContent/HtmlView.php. А реально это файл выгляди так.

Код
<?php

/**
 * @package     Joomla.Administrator
 * @subpackage  com_schooltechcontent
 *
 * [member=126442]copyright[/member]
 * @license
 */

// Нет прямого доступа к этому файлу
defined('_JEXEC') or die('Всем кыш! =D');
?>
<h2>ТЕСТ</h2>




 
*

leha111

  • Захожу иногда
  • 226
  • 0 / 0
Re: Ошибка при создании компонента
« Ответ #5 : 31.01.2022, 13:09:03 »
Попробовал немного переделать

schooltechcontent.xml

Код
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" method="upgrade">
<!-- атрибут 'version' для тега расширения больше не используется -->
 
    <name>SchoolTechContent</name>
    <!-- Следующие элементы являются необязательными и не содержат ограничений на форматирование -->
    <creationDate></creationDate>
    <!-- Фиктивный автор, не стесняйтесь заменять его в любом месте, где вы его видите -->
    <author>MuCompani</author>
    <authorUrl></authorUrl>
    <copyright></copyright>
    <license></license>
    <!-- Строка 'version' записывается в таблицу компонентов -->
    <version>0.1</version>
    <!-- Описание является необязательным и по умолчанию используется имя сомпонента -->
    <description>
        Контент для сайта SchoolTech
    </description>
 
    <!-- Это пространство имен PHP, в котором организован
    код расширения. Он должен следовать этому формату:
   
    Vendor\Component\ComponentName
 
    "Vendor" может быть названией компании или вашим собственным именем
   
    Раздел "ComponentName" ДОЛЖЕН соответствовать имени, используемому
    везде для вашего компонента. Каким бы ни было имя этого XML-файла,
    пространство имен должно совпадать (заглавные/прописные буквы не учитываются).
    -->
    <namespace path="src/">MuCompani\Component\SchoolTechContent</namespace>
           
    <administration>
        <!-- Ссылка, которая появится в меню админки Joomla "Components" -->
        <menu link="index.php?option=com_schooltechcontent">SchoolTechContent</menu>
        <!-- Список файлов и папок для копирования.
             Обратите внимание на атрибут "folder".
             Это имя папки в пакете компонентов для копирования в CMS Joomla 4. -->
        <files folder="admin/">
            <folder>services</folder>
            <folder>src</folder>
            <folder>tmpl</folder>
        </files>
    </administration>
 
</extension>

admin/services/provider.php
Код
<?php

defined('_JEXEC') or die;

use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface;
use Joomla\CMS\Extension\ComponentInterface;
use Joomla\CMS\Extension\MVCComponent;
use Joomla\CMS\Extension\Service\Provider\ComponentDispatcherFactory;
use Joomla\CMS\Extension\Service\Provider\MVCFactory;
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;

return new class implements ServiceProviderInterface {

    public function register(Container $container): void {
        $container->registerServiceProvider(new MVCFactory('\\MuCompani\\Component\\SchoolTechContent'));
        $container->registerServiceProvider(new ComponentDispatcherFactory('\\MuCompani\\Component\\SchoolTechContent'));
        $container->set(
            ComponentInterface::class,
            function (Container $container) {
                $component = new MVCComponent($container->get(ComponentDispatcherFactoryInterface::class));
                $component->setMVCFactory($container->get(MVCFactoryInterface::class));

                return $component;
            }
        );
    }
};

admin/src/Controller/DisplayController.php

Код
<?php

namespace MuCompani\Component\SchoolTechContent\Administrator\Controller;

defined('_JEXEC') or die;

use Joomla\CMS\MVC\Controller\BaseController;

/**
 * @package     Joomla.Administrator
 * @subpackage  com_schooltechcontent
 *
 * [member=126442]copyright[/member]   Copyright (C) 2021 John Smith. All rights reserved.
 * @license     GNU General Public License version 3; see LICENSE
 */

/**
 * Контроллер по умолчанию компонента SchoolTechContent
 *
 * @package     Joomla.Administrator
 * @subpackage  com_schooltechcontent
 */
class DisplayController extends BaseController {
    /**
     * Представление по умолчанию для метода отображения.
     *
     * @var string
     */
    protected $default_view = 'schooltemplate';

    public function display($cachable = false, $urlparams = array()) {
        return parent::display($cachable, $urlparams);
    }

}


admin/src/View/SchoolContent/HtmlView.php

Код
<?php

namespace MuCompani\Component\SchoolTechContent\Administrator\View\SchoolContent;

defined('_JEXEC') or die;

use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;

/**
 * @package     Joomla.Administrator
 * @subpackage  com_helloworld
 *
 * [member=126442]copyright[/member]   Copyright (C) 2021 John Smith. All rights reserved.
 * @license     GNU General Public License version 3; see LICENSE
 */

/**
 * Основной вид в админке "SchoolTechContnent"
 */
class HtmlView extends BaseHtmlView {

    /**
     * Отображение основного вида "SchoolTechContnent"
     *
     * @param   string  $tpl  Имя файла шаблона для анализа; автоматический поиск путей к шаблону.
     * @return  void
     */
    function display($tpl = null) {
        parent::display($tpl);
    }


}

admin/tmpl/schooltemplate/default.php
Код
<?php

/**
 * @package     Joomla.Administrator
 * @subpackage  com_helloworld
 *
 * [member=126442]copyright[/member]   Copyright (C) 2021 John Smith. All rights reserved.
 * @license     GNU General Public License version 3; see LICENSE
 */

// Нет прямого доступа к этому файлу
defined('_JEXEC') or die('Всем кыш! =D');
?>
<h2>Hello world!</h2>

Теперь он пишет "404 Не удалось найти представление [name, type, prefix]: schooltemplate, HTML, Administrator.

"
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Re: Ошибка при создании компонента
« Ответ #6 : 01.02.2022, 11:13:58 »
Зачем ты сюда это запостил?
https://github.com/joomla/joomla-cms/issues/36908

Это не проблема CMS, грузишь людей непонятно чем, ещё и ссылки там оставляешь на русскоязычый ресурс. Закрой там issue, пожалуйста.

Цитировать
Теперь он пишет "404 Не удалось найти представление [name, type, prefix]: schooltemplate, HTML, Administrator.
Тебе эта ошибка явно же пишет, что пытается открыть представление с именем schooltemplate. А у тебя какое? SchoolContent
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка БД при создании материала

Автор kunsaid

Ответов: 7
Просмотров: 3474
Последний ответ 26.06.2026, 13:03:28
от sovpribor
Ошибка вывода страницы регистрации на сайте Joomla! 5.4.2

Автор salesekspert

Ответов: 14
Просмотров: 4539
Последний ответ 04.02.2026, 15:39:19
от sivers
Ошибка при обновлении с 4.4 на 5.4

Автор kunsaid

Ответов: 1
Просмотров: 1532
Последний ответ 25.12.2025, 14:13:16
от b2z
Ошибка err_cache_miss

Автор geral

Ответов: 3
Просмотров: 18738
Последний ответ 01.10.2025, 07:15:51
от geral
Ошибка http 500 Whoops, looks like somethin после включение Отладки в настройках

Автор androv77

Ответов: 3
Просмотров: 1445
Последний ответ 03.04.2025, 17:55:01
от azm1n