Apri i link interni nella stessa scheda del browser

Molti di noi ospitano Discourse in un sottodominio e hanno anche un sito nella root, ad esempio meta.discourse.org e discourse.org. Tuttavia, quando l’impostazione globale “Apri i link esterni in una nuova scheda per impostazione predefinita” è attiva, il sistema assume che tutti i link non appartenenti al forum siano esterni. Esiste un modo per aggiungere domini in modo che si aprano nella stessa scheda del browser? (Se non è possibile, si potrebbe aggiungere questa opzione?)

Esiste un’impostazione “host interni consentiti”, con la descrizione: “Elenco di host interni che Discourse può scansionare in sicurezza per oneboxing e altri scopi”. Forse si potrebbe semplicemente utilizzare questa impostazione, in modo che i domini aggiunti qui aprano i link nella stessa scheda?

Questo sembra un’esigenza molto specifica, quindi la soluzione migliore è farlo tramite tema o plugin.

Onestamente, vorrei farlo su ogni istanza di Discourse che eseguo, Rafael. Non vedo perché qualcuno non vorrebbe farlo: se un sito ha lo stesso dominio interno/genitore, probabilmente vorresti che il link si aprisse nella stessa finestra. Mi chiedo se valga la pena creare un sondaggio per cose del genere per capire cosa preferiscono gli utenti di Discourse. Penso che potresti essere sorpreso dai risultati :blush:

Qual è il modo migliore per fare questo, Rafael?

Ho provato a usare:

<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>

e anche se:

tag.setAttribute("target", "_self");

imposta l’attributo, non ha alcun effetto: i link si aprono comunque in una nuova scheda come al solito.

Immagino che debba usare qualcosa di diverso da api.decorateCookedElement?