Я добился некоторого прогресса в этом с помощью ChatGPT и теперь у меня есть работающие рефтеггеры как для Logos RefTagger, так и для Blue Letter Bible.
Если их можно объединить в компонент темы для использования сообществом — это отлично. Если нет, то создание компонента темы всё равно очень простое. Вам нужно просто взять код того варианта, который вы предпочитаете, и вставить его во вкладку JS нового компонента темы. Не забудьте удалить код по умолчанию, который уже находится во вкладке JS от Discourse.
Если у кого-то есть предложения по улучшению — они будут приняты с благодарностью. Мои навыки ограничиваются только руководством LLM.
Использование Logos RefTagger:
import { apiInitializer } from “discourse/lib/api”;
import loadScript from “discourse/lib/load-script”;
export default apiInitializer(“0.1”, (api) => {
// 1. Определите настройки RefTagger в объекте window ПЕРЕД загрузкой скрипта
window.refTagger = {
settings: {
bibleVersion: “ESV”, // например, версия Библии по умолчанию
tagChapters: true, // отмечать также ссылки на главы
convertHyperlinks: false, // не перерабатывать существующие ссылки
roundCorners: true,
socialSharing: ,
}
};
// 2. Подключитесь к рендерингу постов в Discourse:
api.decorateCooked((element) => {
// Загрузите внешний скрипт RefTagger (если он ещё не загружен)
loadScript(“https://api.reftagger.com/v2/RefTagger.js”).then(() => {
// Запустите разметку на новом элементе контента
window.refTagger.tag(element);
});
});
});
Использование BLB ScriptTagger:
import { apiInitializer } from “discourse/lib/api”;
import loadScript from “discourse/lib/load-script”;
export default apiInitializer(“0.1”, (api) => {
// При желании установите настройки BLB ScriptTagger до загрузки (показаны значения по умолчанию)
window.BLB ||= {}; // убедитесь, что глобальный объект BLB существует
window.BLB.Tagger ||= {};
window.BLB.Tagger.Translation = “NKJV”; // версия перевода по умолчанию
window.BLB.Tagger.HyperLinks = “all”; // отмечать даже уже связанные ссылки
window.BLB.Tagger.TargetNewWindow = true; // ссылки открываются в новой вкладке
// … (другие настройки, такие как DarkTheme и т.д., при необходимости)
api.decorateCooked((elem) => {
loadScript(“https://www.blueletterbible.org/assets/scripts/blbToolTip/BLB_ScriptTagger-min.js”)
.then(() => {
if (window.BLB && window.BLB.Tagger) {
window.BLB.Tagger.pageInit(); // повторно просканировать новый контент на наличие стихов:contentReference[oaicite:6]{index=6}
}
});
});
});