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

Grandmaster

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
Здравствуйте!

В настройках категории в VirtueMart 2 есть возможность добавлять изображение, причем несколько, но выводиться на сайте только одна картинка, которая в настройках идет на первом месте. В шаблоне за вывод этой первой картинки отвечает код:

Код
$this->category->images[0]->displayMediaFull ("", FALSE);

Вопрос в том, можно ли вывести отдельно и вторую картинку? Заранее спасибо откликнувшимся.
« Последнее редактирование: 30.09.2015, 08:36:13 от Grandmaster »
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
судя логически images[0] - это первая картинка, значит images[1] - это уже будет вторая картинка
Значит с помощью for надо менять значение в квадратных скобках что бы выводились все картинки...
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

Grandmaster

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
все правильно, я так и зделал, например вместо 0 написал 1, в результате белый экран
*

jetjetjet

  • Осваиваюсь на форуме
  • 46
  • 2 / 0
Здравствуйте!

В настройках категории в VirtueMart 2 есть возможность добавлять изображение, причем несколько, но выводиться на сайте только одна картинка, которая в настройках идет на первом месте. В шаблоне за вывод этой первой картинки отвечает код:

Код
$this->category->images[0]->displayMediaFull ("", FALSE);

Вопрос в том, можно ли вывести отдельно и вторую картинку? Заранее спасибо откликнувшимся.


Полный код страницы дайте
*

Grandmaster

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
Код
<?php
//vmdebug('$this->category',$this->category);
//vmdebug ('$this->category ' . $this->category->category_name);
// Check to ensure this file is included in Joomla!
defined ('_JEXEC') or die('Restricted access');
$db = JFactory::getDbo();
JHTML::_ ('behavior.modal');
/* javascript for list Slide
  Only here for the order list
  can be changed by the template maker

$js = "
jQuery(document).ready(function () {
jQuery('.orderlistcontainer').hover(
function() { jQuery(this).find('.orderlist').stop().show()},
function() { jQuery(this).find('.orderlist').stop().hide()}
)
});
";
*/
/*$js = "
jQuery(document).ready(function () {
jQuery('.categoryChild p img').remove()
});
";*/
$document = JFactory::getDocument ();
$document->addScriptDeclaration ($js);?>

{modulepos kerastase}
<h1 style="font-size: 28px; line-height: 28px;  margin: 16px 16px 0px 16px; text-transform: uppercase;"><?php echo $this->category->category_name; ?></h1>
<?php
if (empty($this->keyword) and !empty($this->category)) {
?>
    <?php
if (!empty($this->category->category_description) and VmConfig::get('show_category_desc', 1)) { ?>
    <div class="category_description">
    <?php echo $this->category->images[0]->displayMediaFull ("", FALSE);//вывод полной картинки?>
    <?php //echo $this->category->category_description; ?>
    {modulepos catdesc}
    </div>
<?php } ?>

<?php }?>
<?php
if (VmConfig::get ('showCategory', 1) and empty($this->keyword)) {
//echo "";
if (!empty($this->category->haschildren)) {

// Category and Columns Counter
$iCol = 1;
$iCategory = 1;

// Calculating Categories Per Row
$categories_per_row = VmConfig::get ('categories_per_row', 3);
$category_cellwidth = ' width' . floor (100 / $categories_per_row);

// Separator
$verticalseparator = " vertical-separator";
?>
<div class="categoriesView" style="background:none">

<div class="categories">

<?php // Start the Output
if (!empty($this->category->children)) {

foreach ($this->category->children as $category) {

// this is an indicator wether a row needs to be opened or not
if ($iCol == 1) {
?>
<div class="row">
<?php
}

// Category Link
$caturl = JRoute::_ ('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $category->virtuemart_category_id, FALSE);

// Show Category
?>
<div class="categoryChild">
<a href="<?php echo $caturl ?>" class="linkBrow" title="<?php echo $category->category_name ?>">
<h2><?php echo $category->category_name ?></h2>
<?php echo $category->images[0]->displayMediaThumb ("", FALSE); ?>
</a>
<p><?php echo $category->category_description; ?></p>
</div>
<?php
$iCategory++;

// Do we need to close the current row now?
if ($iCol == $categories_per_row) {
?>
</div>
<?php
$iCol = 1;
} else {
$iCol++;
}
}
}
// Do we need a final closing row tag?
if ($iCol != 1) {
?>
</div>
<?php } ?>
</div>
<?php
echo "</div>";
}

}
?>

<div id="browse-view">
<?php

if (!empty($this->keyword)) {
?>
<p style="margin-top: 16px;"><?php echo 'Вы искали: "'.$this->keyword.'"'; ?></p>
<?php
} ?>
<?php if ($this->search !== NULL) {
$category_id  = JRequest::getInt ('virtuemart_category_id', 0); ?>
<!-- End Search Box -->
<?php } ?>

<?php // Show child categories
if (!empty($this->products)) {
?>

<div class="orderby-displaynumber">
    <div style="float: left">
<?php echo $this->vmPagination->getResultsCounter ();?>
    </div>
    <div style="float: right;width: 88px;">
    <?php echo $this->vmPagination->getLimitBox ($this->category->limit_list_step); ?>
    </div>
</div>
<?php
// Category and Columns Counter
$iBrowseCol = 1;
$iBrowseProduct = 1;
// Calculating Products Per Row
$BrowseProducts_per_row = $this->perRow;
$Browsecellwidth = ' width' . floor (100 / $BrowseProducts_per_row);
$BrowseTotalProducts = count($this->products);
// Start the Output
foreach ($this->products as $product) {
        $n = '';
        $this->product = $product;
// this is an indicator wether a row needs to be opened or not
if ($iBrowseCol == 1) {
?>
<div class="row">
<?php
}
// Show Products
?>
       
<div class="product">
<a class="productImg" title="<?php echo $product->product_name ?>" alt="<?php echo $product->product_name ?>" rel="vm-additional-images" href="<?php echo $product->link; ?>">
<h2><?php echo $product->product_name;?></h2>
<?php
                echo $product->images[0]->displayMediaThumb('class="browseProductImage"', false);
                ?>
</a>
                <?php $_SESSION['badges_in_use']=true ?>
                <div style="display:none;" id="<?php echo $product->virtuemart_product_id ?>_bvmpb_mod" class="product_badge"></div>
           
            <?php /*if($product->customfields[0]->virtuemart_custom_id == 21||$product->customfields[0]->virtuemart_custom_id == 22||$product->customfields[0]->virtuemart_custom_id == 23){
                   echo '<div class="sticker '.$product->customfields[0]->display.'"></div>';
                }*/?>
            <?php
            if ($this->show_prices == '1') {
                if (round($product->prices['basePriceWithTax'],$this->currency->_priceConfig['salesPrice'][1])!= $product->prices['salesPrice']) {
                                $n = '';
}else{
                    $n = 'marginTop2';
                }
            }?>
<div class="product-price <?php echo $n;?>">
<?php
if ($this->show_prices == '1') {
if ($product->prices['salesPrice']<=0 and VmConfig::get ('askprice', 1) and  !$product->images[0]->file_is_downloadable) {
echo JText::_ ('COM_VIRTUEMART_PRODUCT_ASKPRICE');
}
//todo add config settings
if (round($product->prices['basePriceWithTax'],$this->currency->_priceConfig['salesPrice'][1])!= $product->prices['salesPrice']) {
                                $n = '';
echo '<div class="price-crossed" >' . $this->currency->createPriceDiv ('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $product->prices). "</div>";
}
echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices);
} ?>
</div>
            <div class="addToCart">
                        <?php
                        if ($this->product->virtuemart_manufacturer_id != 15&&$this->product->virtuemart_manufacturer_id != 13) {
                            echo $this->loadTemplate('addtocart');
                            }else{
                            echo "<p style='color: #6f5d45;text-align: center;font-size: 13.33px;text-transform: uppercase;line-height: 16px;'>Продаётся в салоне!</p>";
                            }
                        ?>
            </div>
</div> <!-- end of product -->

<?php
// Do we need to close the current row now?
if ($iBrowseCol == $BrowseProducts_per_row || $iBrowseProduct == $BrowseTotalProducts)       {?>
    </div> <!-- end of row -->
<?php
$iBrowseCol = 1;
} else {
$iBrowseCol++;
}
$iBrowseProduct++;
} // end of foreach ( $this->products as $product )
// Do we need a final closing row tag?
if ($iBrowseCol != 1) {
?>
<?php
}
?>
<div class="vm-pagination">
<?php echo $this->vmPagination->getPagesLinks (); ?>
</div>
<?php
} elseif ($this->search !== NULL) {
    echo '</br>';
echo JText::_ ('COM_VIRTUEMART_NO_RESULT');
}
?>
</div>
<!-- end browse-view -->
*

Aponte

  • Захожу иногда
  • 122
  • 3 / 3
На странице категории доступна только одна фотография (images[0]), даже если у категории их несколько
*

Aponte

  • Захожу иногда
  • 122
  • 3 / 3
ссылка на варезник

Это изображения товара, а не категории
« Последнее редактирование: 29.09.2015, 23:46:20 от fsv »
*

Grandmaster

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
На странице категории доступна только одна фотография (images[0]), даже если у категории их несколько

Что ж если не возможно вывести другие картинки, тогда буду придумывать что то другое, проблема не решена но думаю тему можно закрыть
*

Aponte

  • Захожу иногда
  • 122
  • 3 / 3
Что ж если не возможно вывести другие картинки, тогда буду придумывать что то другое, проблема не решена но думаю тему можно закрыть

Вывести то можно, но не просто 0 на 1 поменяв.
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Что ж если не возможно вывести другие картинки, тогда буду придумывать что то другое, проблема не решена но думаю тему можно закрыть

Оказывается что есть решение данной проблемы. Нашел на сайте Вывод нескольких изображений категории вместо одной в VirtueMart v3.0.10
Сам скачал и все сработало так как описано в PDF файле.
скачай может поможет......
« Последнее редактирование: 09.10.2015, 02:10:10 от NewUsers »
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

Grandmaster

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
Ссылка битая
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться