我知道默认情况下管理员可以看到所有这些内容。但假设我想在我用 Discourse 搭建的个人网站上隐藏它们,即使我是管理员。
如何隐藏所有类别中的所有这些主题?
您可以取消列出它们,但由于您是管理员,您仍然会看到它们。
不过您可以将主题设为静音。
这是否可以用 CSS 实现?
我不确定他们是否有专门的课程?
我认为我会尝试“标记所有内容并静音标签”的方法,因为这似乎是最省力的方法。(但为了方便他人,请将它们下架)
出于好奇,你为什么想对自己隐藏它们?
出于好奇,你为什么想把它们隐藏起来?
老实说?我就是不想看到它们。如果我去看我的博客……我也只想看到我的博客 ![]()
我找到了一个解决方案。这显然不是一个可扩展的解决方案,甚至可能在技术上不是最优的(不确定这在页面加载量大的大型网站上如何处理),但它对我来说是有效的,因为我的博客只有一个分类:
ChatGPT 给了我这个,并且第一次就成功了。它只针对这个非常特定的主题 ID 并将其隐藏:
<script>
document.addEventListener("DOMContentLoaded", function() {
var element = document.querySelector('[data-topic-id="10"]'); //将 10 替换为你的主题 ID
if (element) {
element.style.display = 'none';
}
});
</script>
搞定!
如果您对企业方面的看法感到好奇(因为我知道我很久以前发布过/您对此做过回应),那么将 Discourse 主题用作类别设置,而其他类别设置均不以 Discourse 主题形式呈现,这是一种不一致的管理体验。它非常不协调(尽管仍然非常巧妙!)。我还看到这些“关于”主题被重命名,用作入门指南(我自己也这样做,尽管只是因为我被迫这样做),等等。
我理解为什么以及利用主题作为现有位置来容纳主题描述的初始价值。我也看到了相同能力的可能性,例如 discourse-category-sidebars 主题组件的文本由一个主题来容纳。
但从用户体验和管理的角度来看,我希望我所有的类别设置都能在一个地方完成。Discourse 已经将文本作为类别设置存储在类别中,并带有 markdown 等,用于类别模板。很高兴看到在这方面为类别带来一致性。
希望这能提供更多见解!
编辑:如果我遗漏了某些我尚未看到的价值,请指出!![]()
另外,编辑:
真遗憾。看起来我上面链接的脚本只在网页首次加载到浏览器时才有效。如果你在网站上导航然后返回,那些元素就会再次出现。以我有限的(可以说完全为零的)网页开发知识来看,我猜是因为在网站加载后 DOMContentLoaded 没有再次运行。
搜索仍在继续……
我认为,如果你想隐藏一个主题,你可能可以用 CSS 来实现。我的 CSS 很差,但我可以看到其中的 data-topic-id,所以它很可能可以被定位?
啊,这里有一个陷阱!如果你重新利用它,那么它就不会出现在某些主题列表中,或者当人们回复时不会触发通知等。我认为最好的处理方式就是将它们保留为类别描述,然后关闭它们(如果你不希望大多数人看到它们,就将它们下架)。当然,撇开开发调整不谈,如果你能做到的话。 ![]()
将类别描述存储在主题中,以及我们如何处理服务条款和指南等问题,都已成为内部讨论的话题。虽然目前没有立即改变格式的计划,但我认为确实需要就此展开讨论。
有一个关于更改默认值的 Feature 主题
这是一个非常适合我的用例的更新。
如果你想通过 CSS 隐藏某个特定主题,在页面加载时以及之后,这个脚本可以做到。只需将你的主题 ID 添加到主题 ID 列表中:
<script>
document.addEventListener("DOMContentLoaded", function() {
var topicIdsToHide = ["10", "20", "30"]; // 在此处添加你的主题 ID
function hideElementsByDataTopicIds() {
topicIdsToHide.forEach(function(id) {
var element = document.querySelector('[data-topic-id="' + id + '"]');
if (element) {
element.style.display = 'none';
}
});
}
// 初始运行时
hideElementsByDataTopicIds();
// 创建一个突变观察者来监视 DOM 更改
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
hideElementsByDataTopicIds();
});
});
// 观察整个文档
observer.observe(document.body, { childList: true, subtree: true });
});
</script>