Fiz alguns progressos com isso usando o ChatGPT e tenho reftaggers funcionando para ambos usando Logos RefTagger e Blue Letter Bible.
Se isso puder ser incluído em um componente de tema para uso da comunidade, ótimo. Se não, o componente de tema é simplesmente para fazer. Você só precisa pegar o código de qualquer um que preferir e colocá-lo na aba JS de um novo componente de tema. Você precisa remover o código padrão que está na aba JS do Discourse.
Se alguém tiver feedback sobre como melhorar, é bem-vindo. Minhas habilidades vão apenas até guiar o LLM.
Usando Logos RefTagger:
import { apiInitializer } from “discourse/lib/api”;
import loadScript from “discourse/lib/load-script”;
export default apiInitializer(“0.1”, (api) => {
// 1. Defina as configurações do RefTagger na janela ANTES de carregar o script
window.refTagger = {
settings: {
bibleVersion: “ESV”, // e.g. versão padrão da Bíblia
tagChapters: true, // marcar também as referências de capítulos
convertHyperlinks: false, // não marcar links existentes
roundCorners: true,
socialSharing: ,
}
};
// 2. Enganche na renderização de posts do Discourse:
api.decorateCooked((element) => {
// Carregue o script externo RefTagger (se ainda não foi carregado)
loadScript(“https://api.reftagger.com/v2/RefTagger.js”).then(() => {
// Execute a marcação no novo elemento de conteúdo
window.refTagger.tag(element);
});
});
});
Usando BLB ScriptTagger:
import { apiInitializer } from “discourse/lib/api”;
import loadScript from “discourse/lib/load-script”;
export default apiInitializer(“0.1”, (api) => {
// Opcionalmente, defina as configurações do BLB ScriptTagger antes de carregar (padrões mostrados)
window.BLB ||= {}; // garanta que o objeto global BLB exista
window.BLB.Tagger ||= {};
window.BLB.Tagger.Translation = “NKJV”; // versão de tradução padrão
window.BLB.Tagger.HyperLinks = “all”; // marcar até mesmo referências já vinculadas
window.BLB.Tagger.TargetNewWindow = true; // links abrem em nova aba
// … (outras configurações como DarkTheme, etc., conforme necessário)
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(); // reanalisar novo conteúdo para versículos:contentReference[oaicite:6]{index=6}
}
});
});
});