Новости 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 Пользователей и 2 Гостей просматривают эту тему.
  • 27 Ответов
  • 1863 Просмотров
*

x_files_1

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Перехватить ошибку
« : 03.03.2014, 07:59:53 »
Добрый день. Сразу к сути. Таблицы в базе данных связаны. И при удалении записи которая используется в другой таблице - соответственно Joomla3 выдает ошибку о нарушении целостности бд. НО... как сделать эту ошибку дружелюбную - без описания sql запроса и так далее. Просто хочется вывести сообщение о том что "удаляемая запись используется в другой таблице". Как реализовать это?
*

x_files_1

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Перехватить ошибку
« Ответ #2 : 03.03.2014, 08:10:25 »
http://www.php.net/manual/ru/language.exceptions.php

Благодарю за описание exceptions. Где именно то отловить ошибку целостности? буду рад примеру связанному с данной ситуацией.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Перехватить ошибку
« Ответ #3 : 03.03.2014, 08:13:00 »
Ошибку отлавливать нужно там, где удаляется запись, примеров масса в самом коде Joomla. Если у вас не 3, то там есть свои функции вывода ошибок, которые в 3 устаревают и скоро исчезнут из фреймворка.
*

x_files_1

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Перехватить ошибку
« Ответ #4 : 03.03.2014, 08:32:53 »
Ошибку отлавливать нужно там, где удаляется запись, примеров масса в самом коде Joomla. Если у вас не 3, то там есть свои функции вывода ошибок, которые в 3 устаревают и скоро исчезнут из фреймворка.

Прошу прощения за наглость) А можно все таки на пальцах и с кодом пример! не могу допереть куда что вставлять. Брал за основу своего компонента один из учебных компонентов HelloWorld. Тут в коде даже нет функции удаления(
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Перехватить ошибку
« Ответ #5 : 03.03.2014, 08:50:06 »
Как вы удаляете запись? И какая Joomla у вас?
*

x_files_1

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Перехватить ошибку
« Ответ #6 : 03.03.2014, 08:56:21 »
Как вы удаляете запись? И какая Joomla у вас?
Если быть честным то не знаю. В тех исходниках которые я взял за основу именно функции удаления нет. Такое ощущение что запускается delete от родительского класса и все!

Joomla 3.2.2
« Последнее редактирование: 03.03.2014, 09:02:35 от x_files_1 »
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Перехватить ошибку
« Ответ #7 : 03.03.2014, 09:00:43 »
Ну тогда боюсь я не знаю как вам помочь, посмотрите контроллеры, там должно быть удаление, может в родительских контроллерах, тогда можно переписать функцию удаления в дочерний и сделать ее по своему.
*

x_files_1

  • Осваиваюсь на форуме
  • 31
  • 0 / 0
Re: Перехватить ошибку
« Ответ #8 : 03.03.2014, 09:04:20 »
Ну тогда боюсь я не знаю как вам помочь, посмотрите контроллеры, там должно быть удаление, может в родительских контроллерах, тогда можно переписать функцию удаления в дочерний и сделать ее по своему.
Тогда очередной глупый вопрос - функция на удаления должна быть в контроллере от редактирования одной записи или от полного списка (таблицы)?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Перехватить ошибку
« Ответ #9 : 03.03.2014, 10:19:07 »
Скорее всего  в контроллере списка.
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
Re: Перехватить ошибку
« Ответ #10 : 13.05.2014, 16:25:57 »
вопрос по теме:
дано:
Код: php
//контроллер:
function delcomment()
    {
        // Clean page cache if System Cache plugin is enabled
        if(JPluginHelper::isEnabled('system', 'cache'))
        {
            $this->cleancache();
        }
            $model = $this->getModel('entry');

            if(!$model->delcomment())
            {
                $msg = JText::_('COM_CONTENTS_ERROR_COMMENT_COULD_NOT_BE_DELETED');
                $type = 'error';
            }
            else
            {
                $msg = JText::_('COM_CONTENTS_COMMENT_DELETED');
                $type = 'success';
            }
}

//модель:
function delcomment()
    {
        $row = $this->getTable('Comments', 'ContentsTable');

        if(!$row->delete($this->_id))
        {
            $this->setError($this->_db->getErrorMsg());
            return false;
        }

        return true;
    }
//Таблица:
class ContentsTableComments extends JTable
{
        public $id = null;
        /**
         * Class constructor
         * @param Object $db (database link object)
         */
        function __construct( &$db )
        {
                parent::__construct( '#__contents_comments', 'id', $db );
        }

        /**
         * Method for loading data into the object field
         * @param Array $array (Featured in the field of data)
         * @param String $ignore
         * @return Boolean result
         */
        public function bind( $array, $ignore = '')
        {
                $users = JFactory::getUser();
                if ( empty( $array['created'] ) ) {
                        $array['created'] = date( 'Y-m-d H:i:s' );
                }
                if ( empty( $array['lastip'] ) ) {
                        $array['lastip'] = $_SERVER["REMOTE_ADDR"];
                }
                if ( empty( $array['username'] ) ) {
                        $array['username'] = $users->get('username');
                }

                return parent::bind( $array, $ignore );
        }

}

собственно вопрос, при удалении записи даже если её нет в бд, выводит положительный результат.
как всё таки поймать в модели ошибку "$this->_db->getErrorMsg()"
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Перехватить ошибку
« Ответ #11 : 13.05.2014, 16:57:52 »
А что выдаст $this->_db->getNumRows()? Ошибка то не будет, если записи такой нету, так что тут надо по количеству возвращаемых записей проверять. Должно вернутся 0.
интернет-блог: http://websiteprog.ru
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
Re: Перехватить ошибку
« Ответ #12 : 13.05.2014, 17:55:03 »
А что выдаст $this->_db->getNumRows()? Ошибка то не будет, если записи такой нету, так что тут надо по количеству возвращаемых записей проверять. Должно вернутся 0.
попробовал вывести
Код: php
var_dump($this->_db->getNumRows());
ответ: NULL
в $this->_id передается значение
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Перехватить ошибку
« Ответ #13 : 13.05.2014, 18:04:47 »
http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/rabota-s-bazoj-dannykh-v-joomla-2-5 можете почитать методы которые предоставляет класс для работы с БД!
Конкретно вам можно сделать так:
Код: php
$db = JFactory::getDbo();
$db->setQuery( 'DELETE  FROM #__table1 WHERE id=8' )->execute();
if(!$db->getAffectedRows()){ echo 'Ничего не удалено!';  }
echo $db->getAffectedRows();
$db->getAffectedRows() покажет количество строк затронутые последним запросом!

Ещё вариант: вы можете сначала проверить или запись существует через SELECT * ...
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
Re: Перехватить ошибку
« Ответ #14 : 13.05.2014, 18:06:53 »
...
сейчас посмотрим, я копал сейчас в сторону JTable
и запрос идет через query а хотелось бы реализовать стандартным методом JTable
« Последнее редактирование: 13.05.2014, 18:21:20 от Hishchnik »
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Перехватить ошибку
« Ответ #15 : 13.05.2014, 18:16:19 »
сейчас посмотрим, я копал сейчас в сторону JTable
Как вариант:

Код: php
$id = 10;
$table->load( $id );
if ( !empty( $table->id ) ) {
echo 'Запись не найдена';
} else {
$table->delete( $id );
}
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
Re: Перехватить ошибку
« Ответ #16 : 13.05.2014, 18:37:30 »
если реализовать на проверку существования записи, и последующего удаления:

if($row->load($this->_id)){
        
$row->delete($this->_id);
        return 
true;
        }
        return 
false;

то можно сделать вывод сообщения на удален, и отсутствия записи,
а может ли конструкция $row->delete($this->_id) выдать ошибку
или она всегда отработает, (одно условие "$this->_id" всегда существует)
?
« Последнее редактирование: 13.05.2014, 18:49:33 от Hishchnik »
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Перехватить ошибку
« Ответ #17 : 13.05.2014, 18:54:11 »
может, в случае ошибки метод delete вернет false и вызовет исключение. Вы же исходники смотрите, там все есть..
интернет-блог: http://websiteprog.ru
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
Re: Перехватить ошибку
« Ответ #18 : 13.05.2014, 18:59:47 »
может, в случае ошибки метод delete вернет false и вызовет исключение. Вы же исходники смотрите, там все есть..
я имел в виду JTable класс стандартная функция delete
Спойлер
[свернуть]
« Последнее редактирование: 13.05.2014, 19:05:12 от Hishchnik »
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Перехватить ошибку
« Ответ #19 : 13.05.2014, 19:06:42 »
метод delete класса jtable и я про него.
Вобще они в разных версиях разные. Лучше конечно ошибки ловить используя jdatabase класса методы
« Последнее редактирование: 13.05.2014, 19:15:31 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
Re: Перехватить ошибку
« Ответ #20 : 13.05.2014, 19:19:05 »
то бишь то, что предложил Istaan http://joomlaforum.ru/index.php/topic,289883.msg1458410.html#msg1458410
остановлюсь на такой вариации:
Код: php
function delentry()
    {
        $row = $this->getTable('Items', 'ContentsTable');
        if($row->load($this->_id)){
        $row->delete($this->_id);
        return true;
        }
        return false;

    }

так как запросы, и работа с бд в основном в контроллере выполняется, в модель не хочу с прямыми запросами лезть
мой вопрос закрыт.
« Последнее редактирование: 13.05.2014, 19:29:49 от Hishchnik »
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Перехватить ошибку
« Ответ #21 : 13.05.2014, 19:23:41 »
ага комбинируйте getAffectedRows() и getErrorNum() для проверки, так оно надежней имхо
upd вот только в версиях 3 и выше getErrorNum() помечен как depricated и рекомендовано использовать обработку исключений, хотя вроде бы еще не выпилили..
« Последнее редактирование: 13.05.2014, 19:33:39 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Перехватить ошибку
« Ответ #22 : 13.05.2014, 19:41:49 »
в модель не хочу с прямыми запросами лезть
Не понял юмора, в модели же и должны быть запросы по логике а не в котроллере )
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
Re: Перехватить ошибку
« Ответ #23 : 13.05.2014, 19:47:07 »
Не понял юмора, в модели же и должны быть запросы по логике а не в котроллере )
путаю? хм.... ведь для модели JTable зачем там quote.....
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Перехватить ошибку
« Ответ #24 : 13.05.2014, 19:50:19 »
путаю? хм.... ведь для модели JTable зачем там quote.....
Ну JTable это же не модель, это класс для работы с записью таблицы как с объектом, а вообще по стандартам J в модели работа с базой, в контроллере, запуск задач, подготовка данных, а уж в виде отображение!
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
Re: Перехватить ошибку
« Ответ #25 : 13.05.2014, 19:56:53 »
Ну JTable это же не модель, это класс для работы с записью таблицы как с объектом, а вообще по стандартам J в модели работа с базой, в контроллере, запуск задач, подготовка данных, а уж в виде отображение!
благодарю за разъяснения
чем больше изучаю J тем больше понимаю, что я её вообще не знаю :-(
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Re: Перехватить ошибку
« Ответ #26 : 13.05.2014, 19:59:57 »
благодарю за разъяснения
чем больше изучаю J тем больше понимаю, что я её вообще не знаю :-(
Ну а вы как думали?) Знания за пяти минут не приходят ) Я уже более 5 лет с Joomla работаю, потому и имею какой то багаж знаний, но все равно есть места в которых плаваю ))
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Перехватить ошибку
« Ответ #27 : 13.05.2014, 20:03:37 »
Кстатии вот такой вариант более универсальный по идее:
Код: php
try 
{
   ...
   $row->delete()
   if (!$this->_db->getAffectedRows())
        throw new RuntimeException("Запись не найдена");
   ...
}
catch (RuntimeException $e)
{
    echo $e->getMessage();
}  

если возникнет ошибка в  базе в любом случае будет вызвано исключение
« Последнее редактирование: 13.05.2014, 20:10:08 от zomby6888 »
интернет-блог: http://websiteprog.ru
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Как исправить ошибку Only variables should be assigned by reference?

Автор nypreh

Ответов: 4
Просмотров: 43210
Последний ответ 16.01.2013, 16:34:56
от b2z