Новости Joomla

Компонент 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

👩‍💻 WT LLMs для Joomla: llms.txt, llms.json для AI-агентов.

👩‍💻 WT LLMs для Joomla: llms.txt, llms.json для AI-агентов.

Это Joomla-компонент для публикации AI-ready карты сайта и автоматической генерации файлов llms.txt, llms-full.txt и llms.json по концепции llmstxt.org.  Также о концепции llms.txt говорит Google в своей справке Lighthouse. Решение помогает LLM-моделям, AI-агентам, GEO/AI SEO-процессам и внутренним автоматизациям получать структурированные данные о сайте без ручной сборки JSON и Markdown.

С помощью WT LLMs можно:
- создать структурированное описание сайта для AI-агентов;
- управлять профилем сайта, картой интентов и каноническими страницами для этих интентов из админки Joomla;
- генерировать llms.txt и llms.json;
- использовать REST API для автоматического заполнения данных;
- отдавать публичную schema-инструкцию для AI-агентов;

В комплект компонента входит плагин markdown-версии страниц Joomla. Системный плагин Joomla, который добавляет альтернативное Markdown-представление страниц сайта. Он позволяет отдавать содержимое страницы в более чистом текстовом формате, удобном для AI-агентов, LLM, поисковых систем и технических интеграций.
Плагин добавляет в ссылки на AI-файлы.

Пакет подходит для сайтов на Joomla 5+, которым важно сделать контент понятнее для LLM, AI-поиска, ассистентов и будущих систем машинного чтения.

Видео:
- ВК Видео
- RuTube
- YouTube

Ссылки:
Страница расширения
GitHub

@joomlafeed

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

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
нет ) у вас же объект формы, а там есть метод setValue($name, $group = null, $value = null)
а событие onContentPrepareForm($form, $data)   в первом параметре передает форму!
вам нужно сделать что то типа:
Код: php
$form->setValue('название поля', 'Группа в котором поле (если нет группы то просто пустоту оставить)', 'Значение поля');
Во, спасибо! Сделал)
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Цитировать
вам нужно сделать что то типа:
или
Код: php-brief
$data->pole ='значение';
$form->bind($data);
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
или
Код: php-brief
$data->pole ='значение';
$form->bind($data);
Ок, спасибо! Попробуем)

ЗЫ Нашел отличную статью по теме http://slyweb.ru/joomla/joomla-create-custom-form-field/ ;)
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
в той статье как и в плагине по которому она писалась (user profile) есть логические ошибки
Код: php-brief
foreach ($article->rating as $k => $v)
           {
            $query->values($articleId.', '.$db->quote('rating.'.$k).', '.$db->quote(json_encode($v)).', '.$order++);
           }
нет здесь смысла писать пустое значение, тем самым вставляя ненужную строку при пустом значении
логичнее было
Код: php-brief
foreach ($article->rating as $k => $v)
           {
            if ($v) $query->values($articleId.', '.$db->quote('rating.'.$k).', '.$db->quote(json_encode($v)).', '.$order++);
           }
так же поле order, в таблице необходимость его под сомнением и упаковка json полей и приставка rating, profile
Честно не отточено
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
в той статье как и в плагине по которому она писалась (user profile) есть логические ошибки
Код: php-brief
foreach ($article->rating as $k => $v)
            {
             $query->values($articleId.', '.$db->quote('rating.'.$k).', '.$db->quote(json_encode($v)).', '.$order++);
            }
нет здесь смысла писать пустое значение, тем самым вставляя ненужную строку при пустом значении
логичнее было
Код: php-brief
foreach ($article->rating as $k => $v)
            {
             if ($v) $query->values($articleId.', '.$db->quote('rating.'.$k).', '.$db->quote(json_encode($v)).', '.$order++);
            }
так же поле order, в таблице необходимость его под сомнением и упаковка json полей и приставка rating, profile
Честно не отточено
Да я и не говорю, что в статье идеально описан метод добавления доп. строк к стандартному материалу. Каждый выполняющий эту задачу должен ее заточить под себя. Это просто как наглядный пример по созданию плагина. А дорабатывает его каждый сам под себя.
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
А из файла плагина есть возможность добавлять строки в переменную $this->item ?
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
to Istaan
Код: php
public function onContentAfterSave($context, $article, $isNew){	}
в этом методе в $context будет что то типа 'com_content.article'
в $article -  будет вся ваша запись
в $isNew - будет true если это новая запись
Проблема, ни в одной из этих переменных нет данных введенных в формах
Код
public function onContentBeforeSave($context, $article, $isNew) {
    echo '<pre style="font-size: 12pt;">'; print_r($article); echo '</pre>';
    exit;
  }
В переменной $article только стандартные поля. Ни одного из добавленных мною полей нет.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
А как вы поля в форму вставляете?
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
А как вы поля в форму вставляете?
А какой именно момент нужен?
Вообще через
Код
public function onContentPrepareForm($form, $data)
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
День добрый!
Подскажите пожалуйста, используя триггер onContentAfterSave не знаю как загрузить изображение на сервер. Надо хотя бы перенести файл с компа на сервер во временную папку (подойдет и tmp), дальше думаю сам уже разберусь. Подскажите, как это сделать?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
ну изображение нужно отправить через форму минимум! если файл у вас на компе, а сайт на сервере то он никак не сможет получить доступ к этому файлу, только если вы не впихнете его в <input type="file" /> вручную!
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
ну изображение нужно отправить через форму минимум! если файл у вас на компе, а сайт на сервере то он никак не сможет получить доступ к этому файлу, только если вы не впихнете его в <input type="file" /> вручную!
Ну форма то то есть:
Код
<input type="file" name="jform[temp][upload_photo_1]" id="jform_temp_upload_photo_1" value="" />
Вроде нашел как загружать файлы - http://joomlaforum.ru/index.php/topic,263530.msg1331151.html#msg1331151. Но чет у меня не выходит добавить файл. Вообще в onContentAfterSave можно добавить загрузку файлов?

Код
        $app = JFactory::getApplication();
        $jinput = $app->input;
 
        // получаем параметры формы
        $file = $jinput->files->get('jform[temp][upload_photo_1]', null, 'files', 'array');
        $filename = JFile::makeSafe($file['name']);
Делал так и получилось что переменные $file и $filename вообще пустые...
« Последнее редактирование: 05.11.2013, 16:15:48 от Sphinx »
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
$file = $jinput->files->get('jform', null, 'files', 'array');
print_r($file);
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
$file = $jinput->files->get('jform', null, 'files', 'array');
print_r($file);
В функцию public function onContentAfterSave($context, $article, $isNew) добавил строки:
Код
    $app = JFactory::getApplication();
    $jinput = $app->input;

    $file = $jinput->files->get('jform', null, 'files', 'array');
К сожалению переменная $file пуста(((

ЗЫ если сделать вывод на экран:
Код
echo '<pre style="font-size: 12pt;">'; print_r($_POST[jform][temp]['upload_photo_1']); echo '</pre>';
то имя файла выводится без проблем...
« Последнее редактирование: 05.11.2013, 16:57:45 от Sphinx »
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
форма материала стандартного?
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
форма материала стандартного?
Компонент материала стандартный, я к нему прикручиваю свои доп. поля. Вот хочу прикрутить, чтобы фотки можно было к материалу прикреплять. Вот и надо хотябы файл с компа перетащить на сервак, а дальше уже боле-менее знаю что делать...
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Материал стандартный, я к нему прикручиваю свои доп. поля.
ну естественно ничего не будет работать! ибо в стандартной форме материала нет enctype="multipart/form-data" без которого файлы слаться не будут!
вам нужно с помощью JS добавить такой аттрибут в форму!
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
ну естественно ничего не будет работать! ибо в стандартной форме материала нет enctype="multipart/form-data" без которого файлы слаться не будут!
вам нужно с помощью JS добавить такой аттрибут в форму!
Блин, вообще JS  не знаю, даже с какой стороны подходить к нему(((
А вы не подскажете как эт сделать, ну или хоть пример где найти, куда копать?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
ну могу сказать как на jQuery )
вот например для Joomla 3
Код: php
JHtml::_('jquery.framework');
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); '); 
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
ну могу сказать как на jQuery )
вот например для Joomla 3
Код: php
JHtml::_('jquery.framework');
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); '); 
Ок, спасибо. Куда копать наверное понял))) Буду думать для версии 2.5) Если что, буду писать сюда)
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Ок, спасибо. Куда копать наверное понял))) Буду думать для версии 2.5) Если что, буду писать сюда)
для версии 2.5 почти тоже
JFactory::getDocument()->addScript( '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js' );
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); ');
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
для версии 2.5 почти тоже
JFactory::getDocument()->addScript( '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js' );
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); ');
Ды я бы до этих строк бы неделю потерял... разбираясь
Спасибо.
А я так понимаю их ведь не в onContentAfterSave ставить?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Ды я бы до этих строк бы неделю потерял... разбираясь
Спасибо.
А я так понимаю их ведь не в onContentAfterSave ставить?
нет конечно ) я пихаю в
Код: php
public function onContentPrepareData()
{
$input = JFactory::getApplication()->input;
if ( $input->getCmd( 'option', '' ) === 'com_content' && $input->getCmd( 'view', '' ) === 'article' && $nput->getCmd( 'layout', '' ) === 'edit' ) {
JFactory::getDocument()->addScript( '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js' );
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); ');
}
}
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
нет конечно ) я пихаю в
Код: php
public function onContentPrepareData()
{
$input = JFactory::getApplication()->input;
if ( $input->getCmd( 'option', '' ) === 'com_content' && $input->getCmd( 'view', '' ) === 'article' && $nput->getCmd( 'layout', '' ) === 'edit' ) {
JFactory::getDocument()->addScript( '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js' );
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); ');
}
}
Ок, спасиб. У меня onContentPrepareData не работает, я запихну в onContentPrepareForm.

Т.к. JS не знаю, результат какой должен получиться? В HTML коде должна добавиться  enctype="multipart/form-data"? Или физически не добавиться, но будет работать как с enctype="multipart/form-data" ? У меня вот не добавилось ничего, ну и изменений не произошло...

Добавил:
Код
JFactory::getDocument()->addScript( 'http://code.jquery.com/jquery-latest.min.js' );
JFactory::getDocument()->addScriptDeclaration(' jQuery(document).ready(function ($) { $("#item-form").attr("enctype", "multipart/form-data"); }); ');
Строка по добавлению jquery появилась, вторая строка тоже появилась в разделе скриптов. Но вот сам атрибут нифига не появляется в теге form

И вот оно) о чудо) атрибут физически не появился, но... переменная $files теперь содержит инфу) Поменял первую строку и вроде заработало) Буду разбираться, спасибо)
« Последнее редактирование: 06.11.2013, 11:54:31 от Sphinx »
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
И вот оно) о чудо) атрибут физически не появился, но... переменная $files теперь содержит инфу) Поменял первую строку и вроде заработало) Буду разбираться, спасибо)
Атрибут через просмотр HTML кода вы естественно не увидите! потому что там не отображается выполнения скриптов! если вы просмотрите через "Просмотр кода элемента" в Chrome то увидите что у формы появится этот атрибут )
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
Атрибут через просмотр HTML кода вы естественно не увидите! потому что там не отображается выполнения скриптов! если вы просмотрите через "Просмотр кода элемента" в Chrome то увидите что у формы появится этот атрибут )
Ок, спасибо. Все работает.
Полезные статейки у вас для работы с файлами, папками и изображениями:
http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/rabota-s-izobrazheniyami-v-joomla-jimage
http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/rabota-s-papkami-v-joomla-klass-jfolder
http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/rabota-s-fajlami-v-joomla-klass-jfile
Без них бы я долго разбирался и искал нужную инфу)
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Ок, спасибо. Все работает.
Не за что )
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
А подскажите еще, как в XML файл добавить параметр к инпуту:
onkeypress="return filter_input(event,/[А-Я0-9]/i)"

Код
<field
  name="test"
  type="text"
  label="test"
  description="test"
  size="20"
  default=""
=/>

Необходимо что бы в итоге получилось:
<input type="text" name="jform[test]" id="test" value="123456789" size="20" onkeypress="return filter_input(event,/[А-Я0-9]/i)"/>
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Только написать свой field который унаследовать от JFieldText
*

Sphinx

  • Захожу иногда
  • 72
  • 0 / 0
Только написать свой field который унаследовать от JFieldText
Нда, как оказывается, геморно модифицировать под свои нужды стандартный компонент материалов( Куда проще и быстрее, по ходу дела, написать свой, заточенный только под свои задачи, компонент....
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Компонент для создания тестов Ari Quiz

Автор alex_noize

Ответов: 0
Просмотров: 1836
Последний ответ 25.02.2016, 20:31:51
от alex_noize
Переименовать com_content

Автор Sergeyy

Ответов: 3
Просмотров: 1628
Последний ответ 18.01.2016, 01:22:21
от dmitry_stas
Сортировка материала в RSS (view.feed.php) по дате создания

Автор bombapiter

Ответов: 7
Просмотров: 3376
Последний ответ 24.10.2014, 10:49:31
от bombapiter
Как проверить существует ли ID материала?

Автор sorrrrry

Ответов: 7
Просмотров: 2941
Последний ответ 15.10.2014, 16:52:58
от SmokerMan
Компонент для подмены файлов ядра jHacksPro

Автор rigin

Ответов: 0
Просмотров: 1694
Последний ответ 04.10.2014, 18:13:40
от rigin