自动链接词

可能是因为大家不知道,我被推荐到这个帖子来寻找将搜索词链接到主题的解决方案,我的第一反应是安装这个组件。我甚至没有意识到监视词的存在。每次我尝试优化 Discourse 时,我都会学到很多关于它的东西,这真是太酷了。

如果你同意,我将编辑第一篇帖子,让大家知道“监视词”的存在,并且可能是一个开箱即用的解决方案。此外,这个主题被标记为官方主题,所以如果它与监视词重复,也许可以考虑弃用它,或者在第一篇帖子中注明。

1 个赞

我有一个功能请求。如果此功能仅应用于正文文本而不应用于标题,那将是极好的,因为标题中的一个单词被链接看起来很奇怪:

在长内容中,有时会有太多相同的链接化单词。
我认为最好只在内容中显示第一个。其他的可以加粗,而不是链接。

2 个赞

您可以通过将 h1h2 等添加到扩展的“排除的标签”设置中来做到这一点,对吗?

谢谢 Matt,我认为你的意思是 excluded classes,我之前不知何故没有注意到,但不幸的是它们不起作用,所以我想这是一个 bug 报告而不是功能请求。

我之前发布的截图是一个类为 anchor 的 h2。

不,我的意思是标签。据我所知,那些是 HTML 标签,而不是 discourse 主题标签。

你说得对!谢谢你,Matt。我太专注于标签是讨论标签了。感谢你的帮助。

1 个赞

您能否告诉我是否可以同时导入多个链接词,或者使用API连接到Google表格上的管理文件?我有一个关于使用此TC来管理和创建多个词汇表的想法。

我觉得这个主题组件很有趣也很有用,但它会多次链接关键字,正确附加它只会附加第一个单词以减少垃圾信息。

我发送了一张图片,它为 1 个关键字重复了 3 次。希望在下一次更新中能修复这部分。

3 个赞

您好!感谢您提供的优秀插件!

有个小问题:即使单词前后没有空格,它仍然可以匹配单词吗?我记得以前它匹配时不需要单词周围有空格。

2 个赞

您好,有没有办法将链接设置为 target=“_self”? 默认情况下,它们都会在新标签页中打开(target=“_blank”),但我找不到任何可以更改此设置的选项。

非常感谢!

https://meta.discourse.org/my/preferences/interface

并搜索 Open all external links in a new tab。它默认为关闭,因为这是最佳实践。您可以使用 /admin/site_settings/category/all_results?filter=external%20links 来更改所有用户的默认设置。

1 个赞

该偏好设置对帖子中的普通链接有效,但对我来说,由该组件创建的链接总是会在新标签页中打开。该偏好设置是否会改变该组件创建的链接的行为?我想知道我错过了什么。

1 个赞

哎呀。抱歉。我没注意到。你说得对。它是硬编码为 blank 的:

在我看来,这似乎是一个合理的特性请求。

等等。我真的没有注意。如果有一个硬编码的选项,忽略用户偏好,那么它应该是“在同一个窗口中打开”。这才是最佳实践。而且,如果链接化的链接指向 Discourse 而不是外部网站,那么它们在新标签页中打开的行为就更加出乎意料了。

3 个赞

我尝试用 JavaScript(代码如下)来修复这个问题,但它只偶尔有效。我认为 Ember.js 可能与之冲突。所以这并不理想

<script>
	window.addEventListener("load", function() {
		document.querySelectorAll("a.linkify-word.no-track-link").forEach(function(link) {
			link.removeAttribute("target");
		});
	});
</script>

更好的解决方案是 fork 主题组件和/或提交一个 PR。

1 个赞

我不知道它值多少钱,但我问了 ChatGPT 如何在后端添加一个复选框,以便在 target="_self"target="_blank" 之间切换。这是它的建议:

settings.yaml 的代码:

self_target:
  type: bool
  default: false
  client: true

initialize-discourse-linkify.js 的代码:

  let createLink = function (text, url) {
	let link = document.createElement("a");
	link.innerHTML = text;
	link.href = url;
	link.rel = "nofollow";
	link.target = settings.self_target ? "_self" : "_blank"; // 在此处使用管理员设置
	link.className = "linkify-word no-track-link";
	return link;
  };

你认为这可能会奏效吗?