Reftagger 库允许您将 Discourse 论坛中的圣经引用转换为带有悬停预览的链接。
应 @outofthebox 的要求,我们基于此代码制作了一个主题组件。
我添加了一个设置,允许您选择要使用的翻译版本,并且该组件扩展了内容安全策略,以允许包含 Reftagger 库。
仓库位于此处。
Reftagger 库允许您将 Discourse 论坛中的圣经引用转换为带有悬停预览的链接。
应 @outofthebox 的要求,我们基于此代码制作了一个主题组件。
我添加了一个设置,允许您选择要使用的翻译版本,并且该组件扩展了内容安全策略,以允许包含 Reftagger 库。
仓库位于此处。
@RGJ,我们的社区非常喜爱这个功能。感谢您以安全且可定制的方式进行开发。我感激您慷慨地将这项工作回馈给 Discourse 社区。
我们过去 18 个月左右一直在使用它,效果非常好。很高兴看到它得到了改进,并且更容易获取了!
哇,太酷了。
我很希望能看到一个类似的组件,允许自定义关键词和预览。这对于创建术语表等场景会非常有用。
有一个 自动缩写单词 主题组件可以实现此功能。
我非常感谢你以及所有在 Meta 上参与原始讨论、探讨如何实现此功能的人!
您正在运行哪个版本的 Discourse?
我该如何查找这些信息?
它应该在 /admin 的管理员仪表板中的某个位置。
在我这里,Discourse 2.7.7(至少在 Safari 中)运行正常。
现已恢复正常。Reftagger 似乎已切换到不同的 CDN(reftagger.bibliacdn.com),该内容需在内容安全策略中设为白名单。我已将其添加并推送了主题组件的新版本。您只需更新该组件即可。
找到了,谢谢您 ![]()
理查德,你好:
我在翻看一个旧帖子。我安装了这个主题组件,出现了两个问题。
首先是组件需要更新的消息。
[管理员通知] 主题 ‘Reftagger’ 包含需要更新的代码。(ID:discourse.script-tag-discourse-plugin)([了解更多](Modernizing inline script tags for templates & JS API))
第二个问题可能与第一个组件需要更新的通知有关。引用没有被标记,页面在浏览器标签中显示加载圆圈并卡住。
是否可以更新此组件?
我用 ChatGPT 在这方面取得了一些进展,并为 Logos RefTagger 和 Blue Letter Bible 制作了可用的 reftaggers。
如果可以将它们捆绑成一个主题组件供社区使用,那就太好了,如果不行,主题组件只是为了方便。您只需要获取您喜欢的任何代码,然后将其放入新主题组件的 JS 选项卡中。您需要删除 Discourse 中 JS 选项卡中的默认代码。
如果有人有改进意见,欢迎提出。我的技能仅限于指导大型语言模型。
使用 Logos RefTagger:
import { apiInitializer } from "discourse/lib/api";
import loadScript from "discourse/lib/load-script";
export default apiInitializer("0.1", (api) => {
// 1. 在加载脚本之前,在 window 上定义 RefTagger 设置
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(); // 重新扫描新内容中的经文引用
}
});
});
});
这现在已经解决了。
即使在解决上述问题之前,我也无法重现这一点——那仅仅是一个警告,而不是一个错误。
非常感谢这次更新!