AstonJ
(AstonJ)
1
多くの場合、Discourse をサブドメインに配置し、ルートに別のサイトを持つ構成になっています(例:meta.discourse.org と discourse.org)。しかし、「デフォルトで他の外部リンクを新しいタブで開く」グローバル設定を「デフォルトで外部リンクを新しいタブで開く」に設定すると、フォーラム以外のすべてのリンクが外部リンクであるとみなされます。特定のドメインを例外として、同じブラウザタブで開くように設定する方法はありますか?(もし現在できない場合、この機能の追加をお願いします。)
「許可された内部ホスト」という設定があり、その説明は「Discourse がワンボックス化やその他の目的のために安全にクロールできる内部ホストのリスト」です。この設定を利用して、ここに追加されたドメインを同じタブで開くように設定することは可能でしょうか?
「いいね!」 1
Falco
(Falco)
2
これは非常に特定のニーズのようですので、テーマやプラグインを通じて行うのが最善です。
「いいね!」 2
AstonJ
(AstonJ)
3
正直に言うと、私が運用しているすべての Discourse インスタンスでこれを行いたいと思います。なぜ誰かがこれを望まないのか、理由がわかりません。サイトが同じ内部ドメインまたは親ドメインの場合、リンクを同じウィンドウで開くことを望むはずです。このようなことについて、Discourse を利用している人々が何を好むかを知るために、アンケートを実施する価値があるかどうか疑問に思います。結果には驚くかもしれませんね 
AstonJ
(AstonJ)
4
ラファエル、これを行う最良の方法は何ですか?
私は以下を試しました:
<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 以外の何かを使う必要があるのでしょうか?