AstonJ
(AstonJ)
1
我们许多人将 Discourse 部署在子域名下,同时在根域名上搭建网站,例如 meta.discourse.org 和 discourse.org。然而,当全局设置“默认在新标签页中打开其他外部链接”设为“默认在新标签页中打开外部链接”时,系统会认为所有非论坛链接都是外部的链接。请问是否有办法添加域名,使这些链接在同一浏览器标签页中打开?(如果目前不支持,能否请添加此选项?)
目前存在一个“允许的内部主机”设置,其描述为:“Discourse 可安全抓取以进行一键嵌入及其他用途的内部主机列表”。或许可以直接利用该设置,将在此处添加的域名配置为在同一标签页中打开?
1 个赞
Falco
(Falco)
2
这听起来是一个非常具体的需求,因此您最好的选择是通过主题或插件来实现。
2 个赞
AstonJ
(AstonJ)
3
说实话,Rafael,我希望在我运行的每个 Discourse 实例上都这样做。我想不出有什么理由不这么做——如果网站属于同一个内部域名或父域名,你可能更希望链接在同一窗口中打开。我在想,是否值得为此发起一个投票,以了解 Discourse 用户更倾向于哪种方式?我觉得结果可能会让你感到惊讶:blush:
AstonJ
(AstonJ)
4
Rafael,这样做最好的方法是什么?
我尝试使用:
<script type="text/discourse-plugin" version="0.8.42">
api.decorateCookedElement(
element => {
const tags = element.querySelectorAll('.hashtag');
tags.forEach(function(tag) {
if (tag.hasAttribute('href')) {
if (tag.href.includes("site.com/tag/")) {
tag.href = tag.href.replace("site.com/tag/", "newsite.com/")
tag.setAttribute("target", "_self");
}
}
});
},
{
onlyStream: true
}
);
</script>
虽然:
tag.setAttribute("target", "_self");
成功设置了该属性,但似乎没有任何效果,链接仍然像往常一样在新标签页中打开。
我猜我需要使用 api.decorateCookedElement 以外的其他方法?