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

Liss

  • Захожу иногда
  • 238
  • 10 / 0
В RSForm есть поле типа "Карты Гугл", предусмотрен функционал геолокации. Суть его такова: на карте маркер, вы таскаете маркет по карте и в текстовом поле появляется адрес (или координаты) местоположения этого маркера. А что если мы хотим определить местоположение абонента автоматически, чтоб маркер сам туда перенесся? Вот решение этой задачи:

файл /administrator/components/com_rsform/helpers/fields/textbox.php
где-то внизу файла есть функция function generateMap(), обеспечивающая базовый функционал, и эту функцию мы скорректируем. Вот так она будет выглядеть:
Код
public function generateMap() {
$id = $this->getProperty('componentId');
$zoom = (int) $this->getProperty('MAPZOOM', 2);
$center = $this->getProperty('MAPCENTER', '39.5500507,-105.7820674');
$geo = $this->getProperty('GEOLOCATION', 'NO');
$address = $this->getProperty('MAPRESULT', 'ADDRESS');
$name = $this->getProperty('NAME');
$mapType = $this->getProperty('MAPTYPE', 'ROADMAP');

$script = '  
 var rsformmap'.$id.';
 var geocoder;
 var rsformmarker'.$id.';
 
 
 function rsfp_initialize_map'.$id.'() {
var message = document.getElementById("message");
   geocoder = new Google.maps.Geocoder();
   var rsformmapDiv'.$id.' = document.getElementById(\'rsform-map'.$id.'\');
   rsformmap'.$id.' = new Google.maps.Map(rsformmapDiv'.$id.', {
     center: new Google.maps.LatLng('.$center.'),
     zoom: '.$zoom.',
     mapTypeId: Google.maps.MapTypeId.'.$mapType.',
     streetViewControl: false
   });
 
   rsformmarker'.$id.' = new Google.maps.Marker({
     map: rsformmap'.$id.',
     position: new Google.maps.LatLng('.$center.'),
     draggable: true
   });

document.getElementById("geoButton").addEventListener("click", function() { //включаем GPS /Wifi / мобильную геолокацию по клику на кнопку
     if (navigator.geolocation) {
   navigator.geolocation.getCurrentPosition(geolocationSuccess, geolocationFailure, {enableHighAccuracy: true, timeout: 10000, maximumAge: 60000});
         }
         else {
       alert("Ваш браузер не поддерживает геолокацию");  
         }
       });

function geolocationSuccess(position) {
         //карта уже определена ранее, просто задаем новые корродинаты
 var location = new Google.maps.LatLng(position.coords.latitude,position.coords.longitude);
 rsformmap'.$id.'.setCenter(location); // центрируем карту по новым координатам
 rsformmarker'.$id.'.setPosition (location); // и перемещаем сюда маркер  
 
 // Передаем полученный через GPS адрес в текстовое поле
 var latlng = {lat: position.coords.latitude, lng: position.coords.longitude};
 geocoder.geocode({"location": latlng}, function(results, status) {
   if (status == Google.maps.GeocoderStatus.OK) {
     if (results[0]) {';
           if ($address == 'ADDRESS')
         $script .= 'document.getElementById("'.$name.'").value = results[0].formatted_address;';
           else
         $script .= 'document.getElementById("'.$name.'").value = rsformmarker'.$id.'.getPosition().toUrlValue();';
           $script .= '
         }
   }

     });
 message.innerHTML = "Местоположение определено";
}
function geolocationFailure(position) {
 message.innerHTML = "Ошибка определения местоположения";
            }
 
   Google.maps.event.addListener(rsformmarker'.$id.', "drag", function() {
                      message.innerHTML = "";
     geocoder.geocode({"latLng": rsformmarker'.$id.'.getPosition()}, function(results, status) {
       if (status == Google.maps.GeocoderStatus.OK) {
         if (results[0]) {';
           if ($address == 'ADDRESS')
         $script .= 'document.getElementById("'.$name.'").value = results[0].formatted_address;';
           else
         $script .= 'document.getElementById("'.$name.'").value = rsformmarker'.$id.'.getPosition().toUrlValue();';
           $script .= '
         }
       }

     });
   });
';

 $currentValue = $this->getValue();
 if (!empty($currentValue)) {
   if ($address == 'ADDRESS') {
 $script .= '
   geocoder.geocode({\'address\': document.getElementById(\''.$name.'\').value}, function(results, status) {
     if (status == Google.maps.GeocoderStatus.OK) {
       rsformmap'.$id.'.setCenter(results[0].geometry.location);
   rsformmarker'.$id.'.setPosition(results[0].geometry.location);
     }
   });
 ';
   }
   else {
 $script .= '
   if (document.getElementById(\''.$name.'\') && document.getElementById(\''.$name.'\').value && document.getElementById(\''.$name.'\').value.length > 0 && document.getElementById(\''.$name.'\').value.indexOf(\',\') > -1) {
     rsformCoordinates'.$id.' = document.getElementById(\''.$name.'\').value.split(\',\');
     formPosition'.$id.' = new Google.maps.LatLng(parseFloat(rsformCoordinates'.$id.'[0]),parseFloat(rsformCoordinates'.$id.'[1]));
     rsformmap'.$id.'.setCenter(formPosition'.$id.');
     rsformmarker'.$id.'.setPosition(formPosition'.$id.');
   }
 ';
   }
 }

 $script .= '
 }
 
 Google.maps.event.addDomListener(window, \'load\', rsfp_initialize_map'.$id.');
 ';

 if ($geo) {
$isAdress = $address == 'ADDRESS';
$script .= '
 window.addEventListener("load", function(){
   rsfp_addEvent(document.getElementById(\''.$name.'\'),\'keyup\', function() {
     rsfp_geolocation(this.value,'.$id.',\''.$name.'\',rsformmap'.$id.',rsformmarker'.$id.',geocoder, '.(int) $isAdress.');
   });
 });
';
 }

// Add the Google Maps API JS
if (!RSFormProFieldTextbox::$mapScript) {
$this->addCustomTag('<script src="https://maps.google.com/maps/api/js?key='.urlencode(RSFormProHelper::getConfig('google.api_key')).'" type="text/javascript"></script>');
// Do not load the script for every map field
RSFormProFieldTextbox::$mapScript = true;
}
// Add the custom script after the maps.js is loaded in the dom
$this->addCustomTag('<script type="text/javascript">'.$script.'</script>');
}

Местоположение определяется по клику на кнопке. В админке создаем кнопку (простую, не submit), даем ей имя geoButton. А также в любом месте нам нужен блочный HTML тэг (в смысле имеющий открывающий и закрывающий тэг <p></p> или <div></div> и т.д), которому приписываем id="message" – тут будут выводится служебные сообщения (местоположение определено, ошибка и т.д.).

Ну а работает это так: жмем на кнопку, если браузер поддерживает геолокацию (любой современный), пользователь разрешил браузеру определить местоположение (а на мобильнике к тому же разрешил геолокацию в системных настройках), то маркер перемещается в новую точку и карта центрируется по маркеру (если все прошло без ошибок), а в текстовом input появляется адрес маркера (или координаты - это настраивается в админке). Далее можно стандартно сместить маркер на карте поточнее. Проверено на стационарном компе (геолокация по IP) и на мобильнике (GPS + Wifi + локация по мобильным вышкам)
« Последнее редактирование: 15.06.2017, 06:43:20 от Taatshi »
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Хорошо бы исполнить в виде плагина, а то RSForm частенько обновляется.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
вот это
Код
else {
  message.innerHTML = "Ошибка";
}
в двух местах лучше удалить ("ошибка" выдается ошибочно)

а вот тут
Код
google.maps.event.addListener(rsformmarker'.$id.', "drag", function() {
  geocoder.geocode({"latLng": rsformmarker'.$id.'.getPosition()}, function(results, status) {
.....
лучше обнулять сообщеньку (когда начинаем вручную корректировать положение маркера, сообщение "местоположении определено" уже как-то не в тему)
Код
google.maps.event.addListener(rsformmarker'.$id.', "drag", function() {
  message.innerHTML = "";
  geocoder.geocode({"latLng": rsformmarker'.$id.'.getPosition()}, function(results, status) {
...

(лучше сейчас поправлю первый пост)
*

Liss

  • Захожу иногда
  • 238
  • 10 / 0
Хорошо бы исполнить в виде плагина, а то RSForm частенько обновляется.
мне слабо...
*

Илонка86

  • Новичок
  • 1
  • 0 / 0
Вот типо хакер 9298345094.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Сбросить Support Ticket ID

Автор goga_pgasovav

Ответов: 1
Просмотров: 1860
Последний ответ 06.11.2024, 20:58:02
от goga_pgasovav
RSForm IP отправителя формы и хостинг на Digital Ocean - решено

Автор Abiladenda

Ответов: 1
Просмотров: 1777
Последний ответ 12.11.2016, 20:18:06
от Abiladenda
Не работают кнопки Сохранить и Применить в редакторе [Решено]

Автор aniangeless

Ответов: 8
Просмотров: 2040
Последний ответ 16.09.2016, 16:38:20
от aniangeless
[Решено] Как правильно обновить RSForm? Ошибка баз данных?

Автор JaneFaint

Ответов: 9
Просмотров: 3294
Последний ответ 13.02.2016, 08:49:42
от vipiusss
[Решено] Добавить в форму любой текст

Автор rk3dnp

Ответов: 2
Просмотров: 1965
Последний ответ 27.01.2016, 20:50:48
от rk3dnp