Автоматическое связывание с картой сайта

:information_source: Краткое описание Позволяет импортировать карту сайта (sitemap), чтобы автоматически сопоставлять заголовки страниц со ссылками на форуме, аналогично работе функции «Следимые слова» (Watched Words).
:hammer_and_wrench: Ссылка на репозиторий GitHub - multidimension-al/discourse-sitemap-autolink: Turn sitemaps into automatic links in discourse. · GitHub
:open_book: Руководство по установке Как устанавливать плагины в Discourse

Возможности

Это альтернатива использованию функции «Следимые слова». Она позволяет взять карту сайта вашего внешнего веб-сайта и импортировать её, автоматически назначить слова для соответствия, а затем создать ссылки во время следующей пересборки (rebake). Очень похоже на работу функции «Следимые слова», но добавляет шаг обработки карт сайта и извлечения ключевых слов.

Хорошо подходит для технических форумов с отдельным разделом Wiki, например, или для форумов, связанных с новостными порталами или интернет-магазинами.

Вы берете карту сайта своей Wiki:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://www.example.com/wiki/soldering-iron-maintenance</loc><lastmod>2026-07-02</lastmod></url>
  <url><loc>https://www.example.com/wiki/mosfet-driver-board</loc><lastmod>2026-07-05</lastmod></url>
  <url><loc>https://www.example.com/wiki/li-ion-battery-pack</loc><lastmod>2026-07-11</lastmod></url>
  <url><loc>https://www.example.com/wiki/pcb-etching</loc><lastmod>2026-07-19</lastmod></url>
  <url><loc>https://www.example.com/wiki/flux</loc><lastmod>2026-07-23</lastmod></url>
</urlset>

Плагин загрузит карту сайта, получит заголовок со страницы, а затем сгенерирует слова для соответствия. Эти слова будут автоматически превращены в ссылки при следующей пересборке любых сообщений, содержащих их, либо плагин сам найдет эти сообщения и автоматически пересоберет только их.

Полученный <title> Сохраненный заголовок
Soldering Iron Maintenance - Example Wiki Soldering Iron Maintenance
MOSFET Driver Board - Example Wiki MOSFET Driver Board
Li-Ion Battery Pack - Example Wiki Li-Ion Battery Pack
PCB Etching - Example Wiki PCB Etching
Flux - Example Wiki Flux

Каждый из заголовков становится фразой для соответствия, с защитными механизмами.

Сохраненный заголовок Сгенерированные фразы Состояние
Soldering Iron Maintenance soldering iron maintenance(s) активно
MOSFET Driver Board mosfet driver board(s) активно
Li-Ion Battery Pack li-ion battery pack(s) активно
PCB Etching pcb etching(s) активно
Flux flux, fluxes ожидает проверки — короткое, односложное слово

Затем любое сообщение, содержащее что-то, соответствующее фразе, будет автоматически содержать ссылку на wiki вашего сайта, не более 1 раза на сообщение.

Итак, если у меня есть сообщение, в котором сказано:

Я читал страницу о обслуживании паяльника и заметил проблему в том, что там говорилось…

Слова «Обслуживание паяльника» будут связаны со страницей, связанной с ними в карте сайта.

Настройка

После установки существует множество настроек, которые можно конфигурировать, а также отдельная страница «Каталог», которая показывает ваши импортируемые карты сайта и список фраз, которые будут соответствовать, вместе с URL.

Найдите XML-файл карты сайта, который вы планируете импортировать, и убедитесь, что вы можете подключиться к этому серверу без ограничений с вашей установки Discourse. Найдите общий префикс или суффикс сайта и установите суффиксы заголовков карты сайта для автолинков той частью поля, которую вы не хотите. Примером может быть «- Discourse Meta», если вы не хотите, чтобы это совпадало с заголовком страницы. Вы также можете указать, чтобы пропустить определенные общие слова, которые часто встречаются на вашем сайте. Большинство настроек не нужно включать, но они позволяют вам настроить время и задержку, сколько времени разрешено тратить на проверку карты сайта и сколько времени задерживать между каждым URL.

После того, как URL был импортирован, он сохраняет время lastmod и не проверяет снова, пока поле lastmod не изменится. Вы можете вручную назначать или удалять соответствующие фразы, и он автоматически спросит вас о совпадениях из одного слова.

Настройки

Связывание

Настройка По умолчанию Назначение
sitemap_autolink_enabled выкл Главный переключатель.
sitemap_autolink_max_links_per_destination_per_post 1 Сколько раз каждое назначение может быть связано в сообщении (побеждают первые упоминания). 0 = без ограничений.
sitemap_autolink_max_links_per_post 0 Общее количество автоматических ссылок на сообщение. 0 = без ограничений.
sitemap_autolink_skip_quotes вкл Никогда не связывать внутри цитируемого материала.
sitemap_autolink_include_private_messages выкл Также связывать в личных сообщениях.
sitemap_autolink_excluded_categories Никогда не связывать в этих категориях (включая подкатегории).
sitemap_autolink_enabled_types – (все) Ограничить типы контента, которые могут связываться.
sitemap_autolink_type_priority manual Порядок приоритета при коллизиях, от самого сильного; неперечисленные типы имеют последний ранг.

Каталог и фразы

Настройка По умолчанию Назначение
sitemap_autolink_sources Карты сайтов для обработки, одна на запись: https://example.com/sitemap.xml,content_type. Индексы расширяются автоматически.
sitemap_autolink_manual_mappings Ручные правила phrase,url,type. Относительные URL разрешаются относительно форума.
sitemap_autolink_min_phrase_length 5 Более короткие сгенерированные фразы отправляются на проверку.
sitemap_autolink_min_phrase_words 2 Сгенерированные фразы с меньшим количеством слов отправляются на проверку (токены с буквами и цифрами, такие как номера моделей, освобождаются).
sitemap_autolink_generate_plurals вкл Также генерировать простые множественные варианты.
sitemap_autolink_title_suffixes Шаблоны, удаляемые с конца полученных заголовков. Запись не может содержать `
sitemap_autolink_excluded_url_patterns Никогда не обрабатывать соответствующие URL карты сайта (подстрока или * как wildcard, например */checkout*).
sitemap_autolink_excluded_terms Точные фразы, которые никогда не должны быть автоматически сгенерированы. Ручные псевдонимы переопределяют.

Синхронизация

Настройка По умолчанию Назначение
sitemap_autolink_sync_enabled выкл Запускать ежедневную задачу sitemap→каталог.
sitemap_autolink_page_fetch_delay_ms 500 Вежливая пауза между получением заголовков (только новые/измененные URL).
sitemap_autolink_sync_time_budget_minutes 30 Максимальное количество минут на запуск; запуск останавливается чисто как Частичный, и следующий запуск возобновляет оставшуюся работу.
sitemap_autolink_fetch_host_rewrites Получать публичный хост через внутреннюю цель (см. ниже).

Пересборка

Настройка По умолчанию Назначение
sitemap_autolink_auto_rebake_on_changes выкл После синхронизации пересобрать сообщения, вероятно, затронутые изменениями фраз — одна пакетная фоновая задача на синхронизацию.
sitemap_autolink_auto_rebake_max_phrases 50 Если одна синхронизация изменяет больше фраз, чем это, полностью пропустить автоматическую пересборку (чтобы первоначальный импорт никогда не запускал пересборку почти всего форума).
sitemap_autolink_auto_rebake_max_posts 500 Максимальное количество сообщений, которые может затронуть волна пересборки одной синхронизации.
sitemap_autolink_max_rebakes_per_job_run 200 Размер пакета на запуск задачи; более крупные волны продолжаются в последующих задачах с интервалом в минуту.

Аналитика

Настройка По умолчанию Назначение
sitemap_autolink_analytics_enabled вкл Отправлять события internal_auto_link_click в Google Analytics через gtag или dataLayer, когда на сгенерированные ссылки нажимают. Не делает ничего, если ни одного из них нет.

Я использую это, чтобы помочь связать мой основной веб-сайт с моим форумом Discourse. Таким образом, тема в нашей Wiki или Магазине может автоматически генерировать ссылку.

Если кто-то говорит о определенном продукте, пока они упоминают ключевое слово, которое вы назначили, или само название продукта, ссылка будет автоматически добавлена во время сборки.

Аналогично, если у вас есть сайт Wiki, вы можете взять заголовки страниц Wiki и автоматически связать их. Допустим, у вас есть сайт истории, и кто-то упоминает «Войну 1812 года», что совпадает со статьей Wiki с тем же названием, она будет автоматически связана.

Надеемся, вам понравится!