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

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
PHP
« : 09.01.2018, 05:06:06 »
Здравствуйте подскажите вот  есть у меня код
Код
		protected function getTicketsd($id) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$array = array();

$query->clear()
->select($db->qn('id'))->select($db->qn('seats'))
->from($db->qn('#__rseventspro_tickets'))
->where($db->qn('ide').' = '.(int) $id);

$db->setQuery($query,0,3);
$tickets = $db->loadObjectList();

if (!empty($tickets)) {
foreach ($tickets as $ticket) {
$query->clear()
->select('SUM(ut.quantity)')
->from($db->qn('#__rseventspro_user_tickets','ut'))
->join('left', $db->qn('#__rseventspro_users','u').' ON '.$db->qn('u.id').' = '.$db->qn('ut.ids'))
->where($db->qn('u.state').' IN (0,1)')
->where($db->qn('ut.idt').' = '.(int) $ticket->id);

$db->setQuery($query);
$purchased = $db->loadResult();

if ($ticket->seats == 0) {
$array[] = JText::_('COM_RSEVENTSPRO_GLOBAL_UNLIMITED').' '.'<em>'.$ticket->name.'</em>';
} else {
$available = $ticket->seats - $purchased;
if ($available <= 0) continue;
$array[] = $available;
}
}
}

return !empty($array)? implode($array) : '';
}
Который из базы берет число в строчке seats например 1. У меня seats сейчас например 3 шт. Выводится сейчас 111. Но при бронировании пользователем места он убирает одно число, то есть как я понял идет сравнение и выводит 11 . Подскажите как мне сложить эти цифры чтобы в результате получить например 3 ? Раньше между цифрами были запятые я их убрал а вот как сложить теперь эти цифры не знаю. Пробывал
Код
$array[] = $available;
заменить на
Код
$array[] = $available + $available;
Так выводит  333 заместо просто 3.
« Последнее редактирование: 09.01.2018, 05:29:16 от gm35 »
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: PHP
« Ответ #1 : 09.01.2018, 09:45:05 »
Код
return !empty($array)? array_sum($array) : '';
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: PHP
« Ответ #2 : 09.01.2018, 12:13:54 »
нельзя же просто суммировать, судя по коду в $array может быть текст
Код
$array[] = JText::_('COM_RSEVENTSPRO_GLOBAL_UNLIMITED').' '.'<em>'.$ticket->name.'</em>';

имхо там надо подсчета логику поменять, а то все смешалось, люди, кони...

и вероятно запятую тоже нельзя убирать, видимо было раньше так
Код
return !empty($array)? implode(',', $array) : '';
и я так думаю это было совсем не зря...
« Последнее редактирование: 09.01.2018, 12:17:06 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #3 : 09.01.2018, 14:14:14 »
Спасибо огромное!
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #4 : 09.01.2018, 14:14:54 »
Код
return !empty($array)? array_sum($array) : '';
Спасибо огромное! Все  получилось))))
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: PHP
« Ответ #5 : 09.01.2018, 15:25:20 »
Все  получилось
я так откровенно говоря не думаю :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: PHP
« Ответ #6 : 09.01.2018, 15:35:58 »
Угу. Сообщение о пустом результате выводиться не будет. Надо обработать более корректно.
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #7 : 10.01.2018, 02:02:15 »
Угу. Сообщение о пустом результате выводиться не будет. Надо обработать более корректно.
А я сделал так    
Код
return !empty($array)? array_sum($array) : 'Ни одного';
И теперь если не чего не осталось то пишет "Ни одного"
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #8 : 10.01.2018, 02:13:31 »
Угу. Сообщение о пустом результате выводиться не будет. Надо обработать более корректно.
Еще не подскажите, данное сообщение выводится в админке, хочу вывести его на сайт в админке у меня выводится так
Код
<?php if ($availabletickets11   = $this->getTicketsd($row->id)) { ?>
<p>Осталось билетов: <?php echo $availabletickets11 ?></p>
<?php } ?>
А если я вставляю в php файл этого же компонента но в файл который выводит данные на сайте вставляю данный код указанный выше,  прописываю код в другом файле 
Код
		public function getTicketsd($id) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$array = array();

$query->clear()
->select($db->qn('id'))->select($db->qn('seats'))
->from($db->qn('#__rseventspro_tickets'))
->where($db->qn('ide').' = '.(int) $id);

$db->setQuery($query,0,3);
$tickets = $db->loadObjectList();

if (!empty($tickets)) {
foreach ($tickets as $ticket) {
$query->clear()
->select('SUM(ut.quantity)')
->from($db->qn('#__rseventspro_user_tickets','ut'))
->join('left', $db->qn('#__rseventspro_users','u').' ON '.$db->qn('u.id').' = '.$db->qn('ut.ids'))
->where($db->qn('u.state').' IN (0,1)')
->where($db->qn('ut.idt').' = '.(int) $ticket->id);

$db->setQuery($query);
$purchased = $db->loadResult();

if ($ticket->seats == 0) {
$array[] = JText::_('COM_RSEVENTSPRO_GLOBAL_UNLIMITED').' '.'<em>'.$ticket->name.'</em>';
} else {
$available = $ticket->seats - $purchased;
if ($available <= 0) continue;
$array[] = $available;
}
}
}

return !empty($array)? array_sum($array) : 'Ни одного';
}
То результат всегда выводит 'Ни одного' то есть не меняются данные.
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #9 : 25.01.2018, 00:10:21 »
Кто нибудь знает? Почему этот же код не работает в компонентах не админ
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: PHP
« Ответ #10 : 25.01.2018, 00:17:14 »
dmitry_stas - а неправильней ли делать SUM(seats) на уровне запроса из базы? Так понимаю что запрос должен отдать количество мест, вот пусть он и считает, зачем ты предлагаешь обрабатывать уже PHP массив на выходе?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #11 : 25.01.2018, 00:20:28 »
dmitry_stas - а неправильней ли делать SUM(seats) на уровне запроса из базы? Так понимаю что запрос должен отдать количество мест, вот пусть он и считает, зачем ты предлагаешь обрабатывать уже PHP массив на выходе?
Так в админке в этом компоненте все считает, а на сайте при выводе этого же кода не хочет выводить хоть какой результат.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: PHP
« Ответ #12 : 25.01.2018, 00:22:11 »
Ну так видимо в админке в SQL запросе и отрабатывает sum(seats), но вы то предлагаете разбирать ваш кастомный код, потому и спросил - зачем сумму искать в выходящем массиве но не сразу получать из запроса одной строкой
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #13 : 25.01.2018, 00:33:06 »
Ну так видимо в админке в SQL запросе и отрабатывает sum(seats), но вы то предлагаете разбирать ваш кастомный код, потому и спросил - зачем сумму искать в выходящем массиве но не сразу получать из запроса одной строкой
Понял теперь, значит надо напрямую. Только вот он запрашивает id определенного события потом seats потом tickets и user_tickets,  то есть не из одного места данные берет. Там в этом компоненте есть билет или билеты в этих белетах есть места. Но при бронировании он не вычитает из этих мест. А получается из определенного события со своим id берет билет, берет места складывает их и вычитает из них другой запрос какой пользователь забронировал место. По этому я подумал что тут масло маслено и не стал изменять код основательно а задал вопрос с суммой этих билетов тут. 
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: PHP
« Ответ #14 : 25.01.2018, 00:37:30 »
gm35 мне трудно дать готовый ответ не видя и не зная базы, но с подобными вещами хорошо знаком.
Нам нужно сделать SELECT SUM(что-то) FROM и вот тут дальше пошли либо цеплять джойнами нужные таблицы либо в WHERE можно еще подзапросами делать.
В любом случае на мой взгляд подобную вещь (количество свободных мест на событие с учетом уже выкупленных билетов) надо делать именно на уровне MySQL, а не вытягивать кучу данных в запросе и потом на PHP их обрабатывать - вот именно это получается масло масляное.

Дадите дизайн ваших таблиц с комментариями по полям и что в итоге нужно получить - дам конкретный запрос на результат без проблем.

Но хотя костыли тоже вещь, если вопрос решен - это главное, красота кода уже потом. Ну а оптимизация скорости вообще редко важно экономить миллисекунды.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: PHP
« Ответ #15 : 25.01.2018, 01:33:07 »
dmitry_stas - а неправильней ли делать SUM(seats) на уровне запроса из базы? Так понимаю что запрос должен отдать количество мест, вот пусть он и считает, зачем ты предлагаешь обрабатывать уже PHP массив на выходе?
та я вроде такого не предлагал :) наоборот уточнил что нельзя суммировать, потому что в массиве там не только числа.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться