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

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Re: JRoute в модуле Joomla 2.5
« Ответ #90 : 12.12.2012, 12:37:28 »
Я кажется нашел!
По какойто непонятно пока мене причине, при вызове главной страницы дамп bildRoute показывает мне:

string(10) "com_myshop" ["view"]=> string(10) "myshopcart" }

вот это вот ["view"]=> string(10) "myshopcart"  Неправильно!

В текущий момент отображается вьюшка myshops, в массиве query это myshopcart . Видимо из за этого не работает и сам роутер (((. Буду разбираться почему такое происходит.
А тут стоит копаться уже поглубже. Проверить модели, виды, типы меню.
*

n_drey

  • Захожу иногда
  • 156
  • 3 / 1
  • Давай телевиденье!
Re: JRoute в модуле Joomla 2.5
« Ответ #91 : 12.12.2012, 12:45:31 »
А что может быть в моделях и видах ) В меню посмотрел ссылка правильная
index.php?option=com_myshop&view=myshops&id=8
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Re: JRoute в модуле Joomla 2.5
« Ответ #92 : 12.12.2012, 12:50:22 »
А что может быть в моделях и видах ) В меню посмотрел ссылка правильная
index.php?option=com_myshop&view=myshops&id=8
Ну если ссылка правильная, то открывайте модель своего view=myshops. Копайте там.
*

n_drey

  • Захожу иногда
  • 156
  • 3 / 1
  • Давай телевиденье!
Re: JRoute в модуле Joomla 2.5
« Ответ #93 : 12.12.2012, 13:13:56 »
Изучил досконально свою модель, не нашёл ничего криминального:
Код
<?php

// No direct access to this file
defined('_JEXEC') or die('Restricted access');

// import Joomla modelitem library
jimport('joomla.application.component.modellist');
jimport('imagelib.classSimpleImage');
jimport( 'joomla.html.parameter' );

/**
 * MUSHOPS Model
 */
class MyShopModelMyShops extends JModelList {

    /**
     * Method to build an SQL query to load the list data.
     *
     * @return      string  An SQL query
     */
    protected $_id;
    protected $_satsearch;
    protected $_searcher;

public function populateState()
{
parent::populateState();
//$app = JFactory::getApplication();
//print $value = JRequest::getUInt('limit', $app->getCfg('list_limit', 0));

$value = JRequest::getUInt('limitstart', 0);
$this->setState('list.start', $value);

//$this->setState('list.start', 0);
// 1) всегда выводить 50 записей
//$this->setState('list.limit', 8);
 
// 2) сначала 50, потом столько сколько пользователь выбрал
$app = JFactory::getApplication();
$this->setState('list.limit', $app->getUserStateFromRequest('global.list.limit', 'limit', 8));
 
// 3) сначала значение из настроек, потом столько сколько пользователь выбрал
//$app = JFactory::getApplication();
//$this->setState('list.limit', $app->getUserStateFromRequest('global.list.limit', 'limit', $app->getCfg('list_limit')));
}

    protected function getListQuery() {
        $this->_id = JRequest::getInt('id');
$this->_satsearch = JRequest::getVar('satsearch');
        $this->_searcher = JRequest::getVar('searcher');
       
       
        if($this->_searcher == 'search'){
        $db = JFactory::getDBO();
        $query = $db->getQuery(true);
        $query->select('*');
        $query->from('#__myshop_products where title like "%' . $this->_satsearch . '%" and published = 1');
        $query->order('ordering');
        return $query;
        }

            $db = JFactory::getDBO();
            $query = $db->getQuery(true);
            $query->select('*');
            $query->from('#__myshop_products where catid = ' . $this->_id . ' and published = 1');
            $query->order('ordering');

$this->chekoutTimeCheker();
            return $query;
       }

public function getItems()
    {
    $items = parent::getItems();
$image = new SimpleImage();

foreach($items as $item){
$params = new JParameter( $item->params );
$img = pathinfo($params->get('imgurl1'));

$url_img = Juri::base().$params->get('imgurl1');

// Миникартинка для каталога
if( !file_exists('./images/thumbs/190_'.$item->id.$img['basename']) ) {
$image->load($url_img);
$image->square_resize(190);
$image->save('./images/thumbs/190_'.$item->id.$img['basename']);
}
// Миникартинка для корзины
if( !file_exists('./images/thumbs/80_'.$item->id.$img['basename']) ) {
$image->load($url_img);
$image->square_resize(80);
$image->save('./images/thumbs/80_'.$item->id.$img['basename']);
}

}


return $items;   
    }

function chekoutTimeCheker(){

$db = JFactory::getDBO();
$db->setQuery('SELECT * FROM #__myshop_purchase WHERE created < DATE_SUB(NOW(), INTERVAL 1 MINUTE) AND published = 1;');
$purchases = $db->loadObjectList();


$idpub = array();
foreach($purchases as $pur) {

$this->productReservedUnreserved($pur->ids, false);
$idpub[] = $pur->id;
}
if(!empty($idpub)){
$db->setQuery("UPDATE #__myshop_purchase SET published = 0 WHERE id IN(".implode(',',$idpub).");");
$db->query();
}
}

// Метод резервирует/возвращает товар на складе с определёнными id
function productReservedUnreserved($ids_string, $flag = bool, $count = 1){
$db = JFactory::getDBO();
if($flag){
$db->setQuery("UPDATE #__myshop_products SET count = count-1 WHERE id IN(".$ids_string.");");
} else {
$db->setQuery("UPDATE #__myshop_products SET count = count+1 WHERE id IN(".$ids_string.");");
}
$db->query();
}

/* public function getStart()
{
//return $this->getState('list.start');
return 0;
} */



}
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Re: JRoute в модуле Joomla 2.5
« Ответ #94 : 12.12.2012, 14:07:52 »
Изучил досконально свою модель, не нашёл ничего криминального:
Код
<?php

// No direct access to this file
defined('_JEXEC') or die('Restricted access');

// import Joomla modelitem library
jimport('joomla.application.component.modellist');
jimport('imagelib.classSimpleImage');
jimport( 'joomla.html.parameter' );

/**
 * MUSHOPS Model
 */
class MyShopModelMyShops extends JModelList {

    /**
     * Method to build an SQL query to load the list data.
     *
     * @return      string  An SQL query
     */
    protected $_id;
    protected $_satsearch;
    protected $_searcher;

public function populateState()
{
parent::populateState();
//$app = JFactory::getApplication();
//print $value = JRequest::getUInt('limit', $app->getCfg('list_limit', 0));

$value = JRequest::getUInt('limitstart', 0);
$this->setState('list.start', $value);

//$this->setState('list.start', 0);
// 1) всегда выводить 50 записей
//$this->setState('list.limit', 8);
 
// 2) сначала 50, потом столько сколько пользователь выбрал
$app = JFactory::getApplication();
$this->setState('list.limit', $app->getUserStateFromRequest('global.list.limit', 'limit', 8));
 
// 3) сначала значение из настроек, потом столько сколько пользователь выбрал
//$app = JFactory::getApplication();
//$this->setState('list.limit', $app->getUserStateFromRequest('global.list.limit', 'limit', $app->getCfg('list_limit')));
}

    protected function getListQuery() {
        $this->_id = JRequest::getInt('id');
$this->_satsearch = JRequest::getVar('satsearch');
        $this->_searcher = JRequest::getVar('searcher');
       
       
        if($this->_searcher == 'search'){
        $db = JFactory::getDBO();
        $query = $db->getQuery(true);
        $query->select('*');
        $query->from('#__myshop_products where title like "%' . $this->_satsearch . '%" and published = 1');
        $query->order('ordering');
        return $query;
        }

            $db = JFactory::getDBO();
            $query = $db->getQuery(true);
            $query->select('*');
            $query->from('#__myshop_products where catid = ' . $this->_id . ' and published = 1');
            $query->order('ordering');

$this->chekoutTimeCheker();
            return $query;
       }

public function getItems()
    {
    $items = parent::getItems();
$image = new SimpleImage();

foreach($items as $item){
$params = new JParameter( $item->params );
$img = pathinfo($params->get('imgurl1'));

$url_img = Juri::base().$params->get('imgurl1');

// Миникартинка для каталога
if( !file_exists('./images/thumbs/190_'.$item->id.$img['basename']) ) {
$image->load($url_img);
$image->square_resize(190);
$image->save('./images/thumbs/190_'.$item->id.$img['basename']);
}
// Миникартинка для корзины
if( !file_exists('./images/thumbs/80_'.$item->id.$img['basename']) ) {
$image->load($url_img);
$image->square_resize(80);
$image->save('./images/thumbs/80_'.$item->id.$img['basename']);
}

}


return $items;   
    }

function chekoutTimeCheker(){

$db = JFactory::getDBO();
$db->setQuery('SELECT * FROM #__myshop_purchase WHERE created < DATE_SUB(NOW(), INTERVAL 1 MINUTE) AND published = 1;');
$purchases = $db->loadObjectList();


$idpub = array();
foreach($purchases as $pur) {

$this->productReservedUnreserved($pur->ids, false);
$idpub[] = $pur->id;
}
if(!empty($idpub)){
$db->setQuery("UPDATE #__myshop_purchase SET published = 0 WHERE id IN(".implode(',',$idpub).");");
$db->query();
}
}

// Метод резервирует/возвращает товар на складе с определёнными id
function productReservedUnreserved($ids_string, $flag = bool, $count = 1){
$db = JFactory::getDBO();
if($flag){
$db->setQuery("UPDATE #__myshop_products SET count = count-1 WHERE id IN(".$ids_string.");");
} else {
$db->setQuery("UPDATE #__myshop_products SET count = count+1 WHERE id IN(".$ids_string.");");
}
$db->query();
}

/* public function getStart()
{
//return $this->getState('list.start');
return 0;
} */



}
Что насчет контроллера? Если вид неверно вызывается, возможно в контроллере ошибка?
*

n_drey

  • Захожу иногда
  • 156
  • 3 / 1
  • Давай телевиденье!
Re: JRoute в модуле Joomla 2.5
« Ответ #95 : 12.12.2012, 14:30:16 »
У меня контроллер вообще пустой. В нём несколько методов для AJAX запорсов и всё.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как редактировать отдельную страницу Joomla 2.5?

Автор mrporter

Ответов: 0
Просмотров: 19933
Последний ответ 14.09.2023, 22:16:47
от mrporter
Joomla 2.5.28, Safari под маком и сессии session

Автор beliyadm

Ответов: 19
Просмотров: 22599
Последний ответ 29.03.2023, 12:17:19
от Sawell
Joomla 2.5.28 как скачать все файлы через панель управления

Автор Sergei41984

Ответов: 7
Просмотров: 21219
Последний ответ 27.12.2022, 23:30:38
от Sergei41984
Расширения для Joomla! 1.6 (коллекция полезных ссылок)

Автор Sulpher

Ответов: 124
Просмотров: 161815
Последний ответ 03.12.2022, 16:15:19
от besttechoff
Почему в админке Joomla 2.58 - у меня 16 админов показывает?

Автор dyalex

Ответов: 7
Просмотров: 20206
Последний ответ 27.10.2022, 19:03:45
от marksetter