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

alex1988

  • Захожу иногда
  • 148
  • 0 / 0
->select($select_id.' as id,'.implode(',', $select))
код только учу, и думал что берется как в бд написано....на это не обратил внимание.

Ещё раз огромное спасибо. + поставил :-)
*

alex1988

  • Захожу иногда
  • 148
  • 0 / 0
Обратил внимание, если в названии товара стоят кавычки, то алиас не генирируеться.
Это так, для справки
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
угу, есть такое. упустили. надо заменить
Код: php
$insertValue[] = $element->$name;
на
Код: php
$insertValue[] = $db->getEscaped($element->$name);
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

alex1988

  • Захожу иногда
  • 148
  • 0 / 0
Спасибо. ещё +
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
обновили на сайте плагин. добавили настройку касающуюся добавления id + исправлена ошибка экранирования кавычек
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
Ребята, подскажите, а можно ли как то через базу данный. сделать так, чтобы автоматом присвоился код товара? Сейчас у меня код товара формируется так, при сохранении товара присваиваться код товара, который берется с id товара, через 1с загрузил кучу товара, и чтобы теперь был код товара, приходиться в ручную, открывать и пересохранять товар, не совсем удобно. помогите пожалуйста.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
на примере покажите чего надо добиться
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
Например, загрузили мы в магазин 1000 товаров, но загрузились они без кода товара, задача: через БД сделать запрос, чтобы автоматом присваивался код товара (код товара присваиваться от id товара), например у меня id товара 300, то код товра присвоиваеться 00000300, но только после пересохранения в админке - данный метод не совсем удобен.
*

nevigen

  • Moderator
  • 10452
  • 863 / 25
  • http://n*****n.com
массовые операции с товрами в базе
в ФАКе есть примеры запросов.
надо только посмотреть поля и сделать под себя
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
массовые операции с товрами в базе
в ФАКе есть примеры запросов.
надо только посмотреть поля и сделать под себя
Спасибо, да посмотрел там есть, пример с удалением, но так и не разобрался, как сделать обратный эффект, какое поле нужно вставить? если подскажете, буду очень благодарен.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Код: sql
update `#__jshopping_products` set product_ean=LPAD(product_id,8,'0') where product_ean='' and parent_id=0
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
Код: sql
update `#__jshopping_products` set product_ean=LPAD(product_id,8,'0') where product_ean='' and parent_id=0
#1046 - No database selected

вместо # вставил перфикс своей базы, та же ошибка, может быть такое. что для начало надо удалить "код товара" у продуктов, или без разницы?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
ну извините :) я предполагал что имея 170+ сообщений, вы понимаете, как должно выглядеть имя таблицы, и то, что после # есть два нижних подчеркивания, а не одно

Префикс_jshopping_products
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
ну извините :) я предполагал что имея 170+ сообщений, вы понимаете, как должно выглядеть имя таблицы, и то, что после # есть два нижних подчеркивания, а не одно

Префикс_jshopping_products
именно так я и делал
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
пробовал всяко, не получаться.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
как "всяко"?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
как "всяко"?
и так _ и так __
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
запрос покажите как вводите, а не черточки

не надо. http://forum.php-myadmin.ru/viewtopic.php?id=1058
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
UPDATE `t5h3r__jshopping_products` SET product_ean=LPAD(product_id,8,'0') WHERE product_ean='' AND parent_id=0
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

graf

  • Захожу иногда
  • 195
  • 0 / 0
это я кому писал?

http://forum.php-myadmin.ru/viewtopic.php?id=1058
сорри, почитаю, разберусь, и отпишусь. Спасибо за помощь.
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Я тут на основании плагина auto_ean попытался плагинчик нарисовать со своими правилами генерации алиаса... и вобщем то всё работает, но есть два неочевидных момента...
Код
<?php
defined('_JEXEC') or die('Restricted access');

class plgJshoppingAdminAutoAlias extends JPlugin
{
    public function __construct(& $subject, $config)
{
parent::__construct($subject, $config);
}

function onAfterSaveProduct( $product ){
// if (алиас == '')
{
$db = JFactory::getDBO();
$query = 'UPDATE `#__jshopping_products` SET `alias_ru-RU` = "'.str_pad($product->product_id, 6, '0', STR_PAD_LEFT).'" WHERE `product_id` = '.$product->product_id;
$db->setQuery($query);
$db->query();
}
}
}

Моих познаний не хватает на то чтобы, проверить существование алиаса. Какую переменную туда подставить?
И ещё - алиасы пишутся в заданную колонку 'alias_ru-RU', а по хорошему надо как то определить текущий язык и задать что то типа `alias_`.lang

Помогите решить эти проблемки.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
1. логичнее это сделать до сохранения товара, а не после. а то получатся первый раз сохранили. а потом опять пересохраняем. используйте событие onBeforeDisplaySaveProduct.
2. исходя из 1 - в плагин передается массив $_POST, и соответственно $post['alias_ru-RU'] содержит алиас.
3. текущий язык - это текущий язык. но вам же надо не текущий, а все установленные? посмотрите, как это сделано в админке в контроллере products, там где $post['alias_'.$lang->language] = ...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
1. логичнее это сделать до сохранения товара, а не после. а то получатся первый раз сохранили. а потом опять пересохраняем. используйте событие onBeforeDisplaySaveProduct.

Тогда получается, что плагин прописывает свой алиас, а ЖШ сохраняет со своим.

2. исходя из 1 - в плагин передается массив $_POST, и соответственно $post['alias_ru-RU'] содержит алиас.

Не содержит, передаётся пустое значение.
« Последнее редактирование: 21.10.2014, 20:08:53 от jorevo »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
в плагине можно воздействовать на передаваемые элементы. для этого в параметрах функции перед $product надо & поставить
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
Код
function onAfterSaveProduct(& $product ){

Так надо? Всё равно не передаёт. Ну и если поставить onBeforeDisplaySaveProduct - получается стандартный ЖШ алиас.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
так, только при этом использовать onBeforeDisplaySaveProduct (и в контроллере посмотреть какие параметры передаются, там не только $product)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

jorevo

  • Давно я тут
  • 595
  • 13 / 1
так, только при этом использовать onBeforeDisplaySaveProduct (и в контроллере посмотреть какие параметры передаются, там не только $product)

Сделал так:
Код
function onBeforeDisplaySaveProduct(&$post, &$product)

Теперь $post передаётся, но получается стандартный алиас от ЖШ, так как алиас от ЖШ генерируется после события onBeforeDisplaySaveProduct. Что делать?
*

Linfuby

  • Завсегдатай
  • 1242
  • 176 / 0
  • Всё просто...
Если посмотреть функцию save() в контроллере
administrator\components\com_jshopping\controllers\products.php
То видно что alias формируется до вызова функции плагина onBeforeDisplaySaveProduct(&$post, &$product) (Строка 565)
А значит в плагине можно вывести $post['alias_'.$lang->language] и посмотреть содержимое - Это и есть тот псевдоним, который сохраняется в базу.
Следовательно если в плагине в функции onBeforeDisplaySaveProduct(&$post, &$product) написать $post['alias_'.$lang->language] = "111", то после сохранения псевдоним будет 111.
Вроде логично и просто :)
А проверку на пустой псевдоним кстати сделать так не получится. Придется использовать проверку на совпадение со стандартным формированием алиаса.
Другими словами, если переменная $post['alias_'.$lang->language] совпадает с преобразованным названием в алиас, то значит алиас был пустой (при условии что все псевдонимы формируются не из названия).
Код: php
if($post['alias_'.$lang->language] == JApplication::stringURLSafe($post['name_'.$lang->language])){Alias в POST пришел пустой}
Немного воображения и логики, и любая проблема становится решенной.
Кривые решения - дают кривой результат!
Решения для JoomShopping
Благодарности и поддержка принимаются по след. реквизитам:
Яндекс.Деньги - 41001751720054
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Цитировать
проверку на пустой псевдоним кстати сделать так не получится
можно проверить $_POST['alias_'.$lang->language]
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT On fly image handler изображения товара JoomShopping в webp на лету

Автор sergeytolkachyov

Ответов: 14
Просмотров: 9877
Последний ответ 30.03.2026, 08:43:36
от sergeytolkachyov
Видео с Youtube вместо картинки на карточке товара

Автор ksena

Ответов: 35
Просмотров: 14527
Последний ответ 08.10.2024, 04:26:36
от kit2m2
Условие для кол-ва товара больше нуля

Автор kik84

Ответов: 3
Просмотров: 3179
Последний ответ 16.02.2024, 13:33:24
от kit2m2
Убрать модуль в карточке товара JoomShopping

Автор alexkraym

Ответов: 35
Просмотров: 8896
Последний ответ 21.08.2023, 07:17:53
от delchev
Проблема с фото в карточке товара

Автор astapon

Ответов: 18
Просмотров: 3356
Последний ответ 24.04.2023, 12:37:50
от kit2m2