可能是因为大家不知道,我被推荐到这个帖子来寻找将搜索词链接到主题的解决方案,我的第一反应是安装这个组件。我甚至没有意识到监视词的存在。每次我尝试优化 Discourse 时,我都会学到很多关于它的东西,这真是太酷了。
如果你同意,我将编辑第一篇帖子,让大家知道“监视词”的存在,并且可能是一个开箱即用的解决方案。此外,这个主题被标记为官方主题,所以如果它与监视词重复,也许可以考虑弃用它,或者在第一篇帖子中注明。
可能是因为大家不知道,我被推荐到这个帖子来寻找将搜索词链接到主题的解决方案,我的第一反应是安装这个组件。我甚至没有意识到监视词的存在。每次我尝试优化 Discourse 时,我都会学到很多关于它的东西,这真是太酷了。
如果你同意,我将编辑第一篇帖子,让大家知道“监视词”的存在,并且可能是一个开箱即用的解决方案。此外,这个主题被标记为官方主题,所以如果它与监视词重复,也许可以考虑弃用它,或者在第一篇帖子中注明。
在长内容中,有时会有太多相同的链接化单词。
我认为最好只在内容中显示第一个。其他的可以加粗,而不是链接。
您可以通过将 h1、h2 等添加到扩展的“排除的标签”设置中来做到这一点,对吗?
谢谢 Matt,我认为你的意思是 excluded classes,我之前不知何故没有注意到,但不幸的是它们不起作用,所以我想这是一个 bug 报告而不是功能请求。
我之前发布的截图是一个类为 anchor 的 h2。
不,我的意思是标签。据我所知,那些是 HTML 标签,而不是 discourse 主题标签。
你说得对!谢谢你,Matt。我太专注于标签是讨论标签了。感谢你的帮助。
您能否告诉我是否可以同时导入多个链接词,或者使用API连接到Google表格上的管理文件?我有一个关于使用此TC来管理和创建多个词汇表的想法。
您好!感谢您提供的优秀插件!
有个小问题:即使单词前后没有空格,它仍然可以匹配单词吗?我记得以前它匹配时不需要单词周围有空格。
您好,有没有办法将链接设置为 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 来更改所有用户的默认设置。
该偏好设置对帖子中的普通链接有效,但对我来说,由该组件创建的链接总是会在新标签页中打开。该偏好设置是否会改变该组件创建的链接的行为?我想知道我错过了什么。
哎呀。抱歉。我没注意到。你说得对。它是硬编码为 blank 的:
在我看来,这似乎是一个合理的特性请求。
等等。我真的没有注意。如果有一个硬编码的选项,忽略用户偏好,那么它应该是“在同一个窗口中打开”。这才是最佳实践。而且,如果链接化的链接指向 Discourse 而不是外部网站,那么它们在新标签页中打开的行为就更加出乎意料了。
我尝试用 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。
我不知道它值多少钱,但我问了 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;
};
你认为这可能会奏效吗?