# 是否有办法将某个主题的发布限制给群组成员，但允许所有用户阅读？

**URL:** <https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228>\
**Category:** Support\
**Created:** [2022年六月27日 15:30 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228 "2022-06-27T15:30:03Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![orangeandblack5](https://avatars.discourse-cdn.com/v4/letter/o/edb3f5/32.png) [@orangeandblack5](https://meta.discourse.org/u/orangeandblack5)\
**Post date:** [2022年六月27日 15:30 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/1 "2022-06-27T15:30:03Z")

</div>

基本上，我们希望设置群组来管理主题内的发帖权限，但我们仍然希望所有用户和未注册的访客都能阅读发布的内容。

有什么方法可以实现这个目标吗？

---

<div class="post-metadata">

**Author:** ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)\
**Post date:** [2022年六月27日 16:17 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/2 "2022-06-27T16:17:54Z")

</div>

类别 → 安全

 ![image](https://global.discourse-cdn.com/meta/original/4X/3/8/6/386c934a9c4b12c273b76fb2412cae9b59ff2fe5.jpeg)

- _kaikki_ 全是英文

我不明白 _限制回复_ 的意义。

---

<div class="post-metadata">

**Author:** ![orangeandblack5](https://avatars.discourse-cdn.com/v4/letter/o/edb3f5/32.png) [@orangeandblack5](https://meta.discourse.org/u/orangeandblack5)\
**Post date:** [2022年六月27日 18:49 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/3 "2022-06-27T18:49:23Z")

</div>

我知道你可以为_分类_做到这一点，但我们希望不必创建一个全新的分类，因为所有这些主题都已经整齐地分类到分类和子分类中了。

我们非常希望能够按_主题_限制回复（以及点赞）。

---

<div class="post-metadata">

**Author:** ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)\
**Post date:** [2022年六月27日 18:52 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/4 "2022-06-27T18:52:14Z")

</div>

据我所知，开箱即用是不行的。但我希望我现在是错的。

---

<div class="post-metadata">

**Author:** ![maiki](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/maiki/32/233950_2.png) [@maiki](https://meta.discourse.org/u/maiki)\
**Post date:** [2022年六月27日 19:19 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/5 "2022-06-27T19:19:25Z")

</div>

> [@orangeandblack5](#):
>
> 我们非常希望能够按_主题_限制回复（以及点赞）。

您可能需要存档这些主题。

> [@Understanding closed, unlisted, and archived topics](https://meta.discourse.org/t/what-is-the-difference-between-closed-unlisted-and-archived-topics/51238):
>
> bookmark This guide explains the differences between Closed, Unlisted, and Archived topics in Discourse, including their characteristics and use cases. person_raising_hand Required user level: All users Discourse offers various ways to manage topics, including closing, unlisting, and archiving. Each of these options serves a different purpose and has specific effects on how topics are displayed and interacted with. This guide will explain the differences between these three states and th…

---

<div class="post-metadata">

**Author:** ![orangeandblack5](https://avatars.discourse-cdn.com/v4/letter/o/edb3f5/32.png) [@orangeandblack5](https://meta.discourse.org/u/orangeandblack5)\
**Post date:** [2022年六月27日 19:50 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/6 "2022-06-27T19:50:06Z")

</div>

不确定这如何仍然允许某个用户组的用户在那里发帖……

---

<div class="post-metadata">

**Author:** ![maiki](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/maiki/32/233950_2.png) [@maiki](https://meta.discourse.org/u/maiki)\
**Post date:** [2022年六月27日 22:11 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/7 "2022-06-27T22:11:56Z")

</div>

啊，抱歉 @orangeandblack5，我没有考虑你最初的问题，只是回复了这部分：

> [@orangeandblack5](#):
>
> 我知道你可以为一个_类别_这样做，但我们希望不必创建一个全新的类别，因为所有这些主题都已经整齐地分类到类别和子类别中了。
> 
> 我们真的希望能够按_主题_限制回复（以及点赞）。

我们重新开始……

> [@orangeandblack5](#):
>
> 基本上，我们希望设置群组来管理主题内的发帖权限，但我们仍然希望所有用户和未注册的访客都能阅读发布的内容。

> [@orangeandblack5](#):
>
> 我们真的希望能够按_主题_限制回复（以及点赞）。

在 Discourse 中，我们在类别级别设置群组权限，而不是在帖子级别设置，所以我认为没有办法按照你的要求去做。

🤔 我很好奇：为什么你不希望任何能够阅读主题的人都不能点赞？我曾想过存档，因为你可能想“冻结”它们，但听起来你希望有些人拥有点赞的能力，而有些人则没有。我喜欢听人们如何在他们的社区中使用 Discourse！🙂

---

<div class="post-metadata">

**Author:** ![orangeandblack5](https://avatars.discourse-cdn.com/v4/letter/o/edb3f5/32.png) [@orangeandblack5](https://meta.discourse.org/u/orangeandblack5)\
**Post date:** [2022年六月28日 00:32 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/8 "2022-06-28T00:32:35Z")

</div>

> [@maiki](#):
>
> 🤔 我很好奇：为什么你不希望任何能阅读主题的人都不能点赞？我曾考虑过存档，因为你可能想“冻结”它们，但听起来你希望有些人拥有点赞的能力，而另一些人则没有。我喜欢听人们在社区中如何使用 Discourse！🙂

对我们来说，发帖比点赞更重要，但总的来说，我们使用 Discourse 来运行各种在线游戏和讨论，人们必须注册才能参与。而你不能在未实际参与的游戏中发帖，这是违反规则的，但我们没有任何软件强制执行这一点，所以有时新用户会感到困惑，无意中打乱了事情，而他们本应该注册即将推出的主题。

如果能有一种方式让每个人都能阅读所有主题，但阻止未注册特定主题的人在其中发帖，那就太棒了！

---

<div class="post-metadata">

**Author:** ![manuel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/manuel/32/468169_2.png) [@manuel](https://meta.discourse.org/u/manuel)\
**Post date:** [2022年六月28日 16:13 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/9 "2022-06-28T16:13:06Z")

</div>

我也认为，在不使用自定义代码的情况下实现这一目标的方法是为每个您想限制的游戏或讨论添加一个专门的子类别。这听起来很麻烦，但由于您每次都必须设置一个专门的组，所以实际上手动工作量并没有增加多少。无论如何，用户体验在这种设置下会很清晰：

- 类别：games  
权限：everyone read
- 子类别：game-A  
权限：only game-A group reply

因此，game-A 的主题对每个人都是可见的，但任何不是 game-A组成员的用户在打开主题时将无法回复。

如果您想要一个非常清晰的界面，并且这符合您的架构，您甚至可以使用 CSS 从界面中隐藏相关的子类别徽章。这样，子类别就纯粹是为了访问权限而不是导航。

---

<div class="post-metadata">

**Author:** ![orangeandblack5](https://avatars.discourse-cdn.com/v4/letter/o/edb3f5/32.png) [@orangeandblack5](https://meta.discourse.org/u/orangeandblack5)\
**Post date:** [2022年六月29日 03:09 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/10 "2022-06-29T03:09:50Z")

</div>

问题在于我们已经使用子类别来分类事物。

我们至少会考虑一下，但这确实不是理想的解决方案，因为我们需要去掉一个完整的分类/组织层级，这可能会让网站更难导航，尤其是对新用户来说。

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2022年六月29日 08:43 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/11 "2022-06-29T08:43:23Z")

</div>

我怀疑您应该使用标签来组织其中一些内容。请参阅[是时候谈谈标签了](https://meta.discourse.org/t/its-time-we-talked-about-tags/72467)。

将不会有简单的方法来获得每个主题的权限。

---

<div class="post-metadata">

**Author:** ![Tris20](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tris20/32/264639_2.png) [@Tris20](https://meta.discourse.org/u/Tris20)\
**Post date:** [2022年六月29日 10:35 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/12 "2022-06-29T10:35:45Z")

</div>

我想知道是否有一种方法可以为私信提供[页面发布](https://meta.discourse.org/t/page-publishing/151971)？

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2022年六月29日 14:15 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/13 "2022-06-29T14:15:27Z")

</div>

我不这么认为。但是，您可以将它们发布到一个人们可以撰写内容的类别中，然后取消列表。

---

<div class="post-metadata">

**Author:** ![stuwest](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stuwest/32/192400_2.png) [@stuwest](https://meta.discourse.org/u/stuwest)\
**Post date:** [2022年六月29日 17:18 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/14 "2022-06-29T17:18:50Z")

</div>

> [@maiki](#):
>
> 我很好奇：为什么你不希望任何能阅读帖子的人都不能点赞？

这与 OP 的用例不同，但我管理着一个只有匿名用户的版块，用户可以在其中发布有关职业问题的内容，而无需向所有人公开他们的用户名（尽管他们知道如果有人行为不当，管理员可以查出是谁发的帖子）。如果能将点赞限制为只有匿名用户才能进行，那就太好了。

---

<div class="post-metadata">

**Author:** ![Daniel\_McQuillen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/daniel_mcquillen/32/160806_2.png) [@Daniel\_McQuillen](https://meta.discourse.org/u/Daniel_McQuillen)\
**Post date:** [2024年二月5日 23:34 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/15 "2024-02-05T23:34:45Z")

</div>

我遇到了同样的情况：我们在自定义学习管理系统（LMS）中使用了 Discourse，并且有时希望将课程中的某个主题的访问权限限制给课程中的特定学员组。

因此，唯一的方法（如上所述）是为课程创建一个类别，然后为需要限制访问的每个学员组创建一个子类别……然后将每个主题复制到每个子类别中，这有点麻烦，包括需要我们这边有反映这种设置的模型以及用于保持同步的代码。

如果我们能够将每个主题的帖子限制给特定的用户组，那就太棒了。

---

<div class="post-metadata">

**Author:** ![maiki](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/maiki/32/233950_2.png) [@maiki](https://meta.discourse.org/u/maiki)\
**Post date:** [2024年二月5日 23:49 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/16 "2024-02-05T23:49:12Z")

</div>

🤔

每个人都需要看到所有其他群组的回复吗？

如果是我来设置，我会把这些材料放在一个不允许回复的类别中，仅作为参考资料。

然后，我会发送一个群组私信链接到这些材料，并在那里进行讨论。

这样你就可以轻松地将群组组织成小组，并轻松地重复使用这些材料。 🙂

> [@Daniel\_McQuillen](#):
>
> 如果我们可以限制每个主题的帖子仅限小组查看，那就太棒了。

私信就是这样工作的！ 🎉 但公开主题不行。

---

<div class="post-metadata">

**Author:** ![Daniel\_McQuillen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/daniel_mcquillen/32/160806_2.png) [@Daniel\_McQuillen](https://meta.discourse.org/u/Daniel_McQuillen)\
**Post date:** [2024年二月6日 00:00 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/17 "2024-02-06T00:00:47Z")

</div>

@maiki 哇哦。我不知道这个。感谢分享！！！

但是，目前的策略是“设置好就不用管了”。当一门课程编写完成后，我们可以为默认学员组创建主题和子类别，然后填充我们想要的主题。如果添加了新的学员组，我们就创建一个新的组和子类别，并复制主题。

然后我们就可以不用管它了，只需要通过回调来处理活动通知。

你描述的方法，是不是需要更多手动操作？“发送群组私信”听起来是在课程生命周期中发生的一种活动。如果一个新学生报名了一个现有课程，并且被分配到一个特定的学员组，我们可以将他们添加到 Discourse 中的正确组，然后他们就可以访问现有的子类别（针对该学员组）以及它复制的所有主题。在这种情况下，他们会自动被添加到现有的“群组私信”中，工作流程没有区别吗？

用户界面看起来会一样吗？目前我们只有主题，然后（针对特定学员组，如果需要）所有的帖子都在其下方，符合“通常”的 Discourse 用户界面。

我必须说，我讨厌每次我们这边创建一个新学员组时都要做子类别和复制所有主题的工作，以及管理这些，所以这种直接的私信听起来很有趣。但我有一种顾虑，就是使用“私信”来完成一个类别+主题能做到的所有事情，是不是遗漏了什么。

---

<div class="post-metadata">

**Author:** ![maiki](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/maiki/32/233950_2.png) [@maiki](https://meta.discourse.org/u/maiki)\
**Post date:** [2024年二月6日 00:39 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/18 "2024-02-06T00:39:49Z")

</div>

> [@Daniel\_McQuillen](#):
>
> 然而，按照目前的策略，它有点像“设置好就不用管了”。当一门课程被编写好后，我们可以为默认的学员组创建主题和子类别，然后填充我们想要的主题。如果添加了新的学员组，我们就创建一个新的组和子类别，并复制主题。
> 
> 然后我们就可以不用管它了，只需要通过回调来处理活动通知。
> 
> 你所描述的方法，是否需要更多手动操作？“发送群组私信”听起来像是在课程进行期间发生的一项活动。

我实在无法想象这对用户来说是什么样子。

我只知道，在我处理可重用内容时，我经常会链接到主题，或者使用模板在私信中重用内容。

如果你愿意举例说明你正在做的事情，包括学员的主题和回复，以便我们了解学员组的体验，我很乐意构思如何使用私信来完成它。🙂

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2024年二月6日 21:31 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/19 "2024-02-06T21:31:50Z")

</div>

我所做的是设置一个只读类别，其中包含作业，然后让学生在班级类别中发帖时使用“回复链接主题”功能来“回答”作业。我不确定现在在只读帖子中找到“回复链接主题”是否容易。

---

<div class="post-metadata">

**Author:** ![Daniel\_McQuillen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/daniel_mcquillen/32/160806_2.png) [@Daniel\_McQuillen](https://meta.discourse.org/u/Daniel_McQuillen)\
**Post date:** [2024年二月7日 23:14 UTC](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228/20 "2024-02-07T23:14:51Z")

</div>

感谢 @pfaffman 和 @maiki 的想法。我们集成话题的方式是使用 API 拉取话题的最新帖子，并直接显示在我们学习管理系统 (LMS) 的相关课程单元页面中：

 ![image](https://global.discourse-cdn.com/meta/original/4X/1/e/7/1e7f38a75aab491f40248b55b183ac6554697a8a.jpeg)

然后，当您点击“加入讨论”时，它会将您带到课程类别中的话题，以及课程中您所在学员群组的子类别，从而限制您只能看到来自您学员群组同伴的评论：

 ![image](https://global.discourse-cdn.com/meta/original/4X/7/1/d/71db30fa9b45670296d51d3e7ff885758ee3373e.png)

有点奇怪的是，这种架构会渗透到用户界面中，例如在这个标题中：

 ![image](https://global.discourse-cdn.com/meta/original/4X/b/1/e/b1eb9d35693219f74941ad0aff3893e3f3615a8c.png)

以及导航栏…

 ![image](https://global.discourse-cdn.com/meta/original/4X/d/d/6/dd6e76447bf45fcc18bacb971052faef435aca62.png)

这迫使学生理解为什么会有一个顶层类别，然后有一个用于“课程话题”（这是他们学员群组的类别）和一个用于“一般讨论”（这是课程中所有学员群组的类别）的子类别……如果他们随意点击，可能会有点迷失。

有时，学员群组更多的是一种管理分组机制，而不是学生关心的东西，这可能会使这种类别/子类别的东西更加令人困惑。“为什么课程中的所有话题只有一个类别？”

另外，正如我之前提到的，这种设置意味着我们需要在创建学员群组时复制所有话题，在删除学员群组时删除该子集，或者在创建/更新/删除话题时更新每个子类别。

[下一頁](https://meta.discourse.org/t/is-there-any-way-to-restrict-posting-in-a-topic-to-members-of-a-group-but-allow-all-users-to-read-the-topic/231228.md?page=2)
