Ouvrir les liens internes dans le même onglet du navigateur

Beaucoup d’entre nous hébergent Discourse dans un sous-domaine tout en ayant un site à la racine, par exemple meta.discourse.org et discourse.org. Cependant, lorsque le paramètre global « Par défaut, ouvrir les liens externes dans un nouvel onglet » est activé, Discourse suppose que tous les liens non liés au forum sont externes. Existe-t-il un moyen d’ajouter des domaines afin qu’ils s’ouvrent dans le même onglet du navigateur ? (Si non, pourriez-vous ajouter cette option, s’il vous plaît ?)

Il existe un paramètre « hôtes internes autorisés », dont la description est : « Une liste d’hôtes internes que Discourse peut parcourir en toute sécurité pour le oneboxing et autres fonctions ». Peut-être suffirait-il d’utiliser ce paramètre : les domaines ajoutés ici pourraient alors être configurés pour s’ouvrir dans le même onglet ?

1 « J'aime »

Cela ressemble à un besoin très spécifique, donc votre meilleure option est de le faire via un thème ou un plugin.

2 « J'aime »

Je voudrais le faire sur chaque instance Discourse que j’héberge, honnêtement, Rafael. Je ne vois pas pourquoi quelqu’un ne voudrait pas le faire : si un site utilise le même domaine interne ou parent, vous voudrez probablement que le lien s’ouvre dans la même fenêtre. Je me demande s’il ne vaudrait pas la peine de lancer un sondage pour ce genre de choses afin de voir ce que les utilisateurs de Discourse préfèrent ? Je pense que les résultats pourraient vous surprendre :blush:

Quelle est la meilleure façon de procéder, Rafael ?

J’ai essayé d’utiliser :

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

Bien que :

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

définisse l’attribut, cela n’a aucun impact, les liens s’ouvrant toujours dans un nouvel onglet comme d’habitude.

Je suppose que je dois utiliser autre chose que api.decorateCookedElement ?