Открывать внутренние ссылки в той же вкладке браузера

Многие из нас размещают Discourse в поддомене, а основной сайт — в корневом домене, например meta.discourse.org и discourse.org. Однако, когда глобальная настройка «По умолчанию открывать внешние ссылки в новой вкладке» установлена в значение «Открывать внешние ссылки в новой вкладке по умолчанию», система предполагает, что все ссылки, не относящиеся к форуму, являются внешними. Существует ли способ добавить домены, чтобы они открывались в той же вкладке браузера? (Если нет, можно ли добавить такую опцию?)

Существует настройка «Разрешённые внутренние хосты» с описанием: «Список внутренних хостов, которые Discourse может безопасно сканировать для одной коробки и других целей». Возможно, достаточно использовать её, и домены, добавленные сюда, будут открываться в той же вкладке?

Это звучит как очень специфическая задача, поэтому лучше всего решить её через тему или плагин.

Честно говоря, я бы хотел делать так на каждом экземпляре Discourse, который запускаю. Не вижу причин, почему кто-то не захотел бы этого: если сайт находится на том же внутреннем или родительском домене, ссылка, скорее всего, должна открываться в том же окне. Интересно, стоит ли проводить опрос по таким вопросам, чтобы понять, что предпочитают пользователи Discourse? Думаю, результаты вас удивят :blush:

Какой лучший способ сделать это, Рафаэль?

Я пробовал использовать:

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