# 插件能否实现主题内选择性回复可见性，以及如何创建一个？

**URL:** https://meta.discourse.org/t/can-plugins-achieve-selective-reply-visibility-within-topics-and-how-can-i-create-one/259143
**Category:** Feature
**Created:** [2023 年3 月 23 日 11:17 UTC](https://meta.discourse.org/t/can-plugins-achieve-selective-reply-visibility-within-topics-and-how-can-i-create-one/259143 "2023-03-23T11:17:54Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![HuengchI](https://avatars.discourse-cdn.com/v4/letter/h/94ad74/32.png) [@HuengchI](https://meta.discourse.org/u/HuengchI)
#### Post date: [2023 年3 月 23 日 11:17 UTC](https://meta.discourse.org/t/can-plugins-achieve-selective-reply-visibility-within-topics-and-how-can-i-create-one/259143/1 "2023-03-23T11:17:54Z")

</div>

您好，社区各位，

Discourse 是一个功能强大的优秀论坛。我想了解是否有一种方法可以让用户手动选择他们对特定主题回复的受众。虽然我知道有一个很棒的“discourse-private-reply”插件可以限制回复的可见性仅限于主题创建者，但我正在寻找一种更细粒度的解决方案。

为了说清楚，假设我正在一个主题中撰写回复，我希望能够在点击“发布”按钮之前，创建一个白名单，列出可以看到我回复的用户。本质上，我想确保只有我选择的用户才能看到我的回复，而其他所有人都看不到。

我个人是一名具备一些编程技能的开发者，但我以前从未接触过任何 Discourse 插件开发。如果不存在可以提供我想要的控制级别的现有插件或工具，我将非常感谢任何关于开发方法的建议或指导，例如我应该挂钩哪个“进程”或调用哪些 API 来实现所需的功能。

任何建议或见解都将不胜感激。感谢您的时间和帮助！

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [2023 年3 月 23 日 11:37 UTC](https://meta.discourse.org/t/can-plugins-achieve-selective-reply-visibility-within-topics-and-how-can-i-create-one/259143/2 "2023-03-23T11:37:20Z")

</div>

鉴于需要如此细粒度的访问权限，您可能需要考虑常规的公共主题是否是最佳解决方案。也许您可以多谈谈您的具体用例？

一个很好的起点确实是我的[私有回复插件](https://github.com/communiteq/discourse-private-replies)。它有一个名为 `can_see_post_if_author_among` 的[函数](https://github.com/communiteq/discourse-private-replies/blob/master/plugin.rb#L32-L38)，该函数目前接受一个主题。您应该修改它以接受一个帖子。您应该将允许的用户与帖子一起存储在自定义字段中，然后将查看用户与该列表进行比较。

该插件还覆盖了原始帖子、搜索、主题视图和用户个人资料活动的访问控制逻辑。

话虽如此，我预计您会遇到性能和用户体验方面的一些问题，特别是如果您没有 Discourse 插件开发经验，这可能是一项艰巨的任务，因此我再次建议您考虑这是否是您用例的最佳方法。

---

<div class="post-metadata">

### Author: ![HuengchI](https://avatars.discourse-cdn.com/v4/letter/h/94ad74/32.png) [@HuengchI](https://meta.discourse.org/u/HuengchI)
#### Post date: [2023 年3 月 24 日 04:44 UTC](https://meta.discourse.org/t/can-plugins-achieve-selective-reply-visibility-within-topics-and-how-can-i-create-one/259143/3 "2023-03-24T04:44:03Z")

</div>

感谢您及时回复并分享您对此事的见解。我想举一个用例，其中老师会给每个学生分配不同的任务，并要求他们在 Discourse 论坛上发布答案（报告）。在这种情况下，1) 老师需要能够看到每个学生的答案，并且 2) 一些学生可能希望将他们的答案保密，而另一些学生则寻求评论、反馈和互动。此外，3) 老师可能会提供不适合公开的评论。

对帖子进行控制的需求也适用于其他情况，例如员工撰写月度报告或患者撰写康复日志。抽象地说，这是关于满足用户对控制的需求，而不是版主提前规划一切。这对于专注于高质量内容的小型社区尤其重要。

虽然 Discourse 是一个拥有数千用户的庞大社区的绝佳平台，但它也是构建小型、精致社区的绝佳选择，这些社区鼓励更深入的思考和详尽的讨论。用户应该对他们精心撰写的帖子拥有更多的控制权。

关于为此功能开发插件，我感谢您对平衡性能和用户体验的担忧。与其立即创建一个复杂的插件，不如最大化现有功能是一个更好的方法。例如，通过创建一个包含多个子类别的类别，每个类别对应一个作业，并让学生将他们的作品提交到相应的子类别。这允许对每个主题进行控制，并且创建者可以选择使他们的主题公开或对特定用户组可见。采取这样的小步骤可以帮助减轻工作量，并更容易验证该功能的有效性。

总之，让用户对他们的帖子拥有更多的控制权对于创建具有高质量内容和参与度的小众社区至关重要。这不仅会培育这些社区，还会扩展 Discourse 的潜在用途。这是探索 Discourse 功能的新方法。

感谢您给我这个讨论的机会。:slightly_smiling_face:

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [2023 年3 月 24 日 06:10 UTC](https://meta.discourse.org/t/can-plugins-achieve-selective-reply-visibility-within-topics-and-how-can-i-create-one/259143/4 "2023-03-24T06:10:29Z")

</div>

> [@HuengchI](#):
>
> 一位老师给每个学生分配不同的任务，并要求他们在 Discourse 论坛上发布答案（报告）。在这种情况下，1) 老师需要能够看到每个学生的答案，2) 一些学生可能希望对他们的答案保密，而另一些学生则寻求评论、反馈和互动。此外，3) 老师可能会提供不适合公开的评论。

这正是该插件的用途。你只需要用私信或聊天来处理 #2 和 #3。

> [@HuengchI](#):
>
> 或者，例如，创建一个包含多个子类别的类别，每个子类别对应一项作业，并让学生将他们的作品提交到相应的子类别。这可以控制每个主题，并且创建者可以选择让他们的主题公开或对特定用户组可见。

创建者已经可以选择让回复可见或不可见，该插件也可以设置为让同一主要群组中的用户可以看到回复。  
通过使用具有不同访问权限的不同类别，你可以进一步控制谁可以查看整个主题以及谁不能。

再说一遍，你没有说服我这些更改是必要的。它们只会增加用户和插件维护的复杂性。

---

<div class="post-metadata">

### Author: ![HuengchI](https://avatars.discourse-cdn.com/v4/letter/h/94ad74/32.png) [@HuengchI](https://meta.discourse.org/u/HuengchI)
#### Post date: [2023 年3 月 24 日 07:40 UTC](https://meta.discourse.org/t/can-plugins-achieve-selective-reply-visibility-within-topics-and-how-can-i-create-one/259143/5 "2023-03-24T07:40:40Z")

</div>

我想澄清一下，我无意建议对 discourse-private-reply 进行任何更改。我明白它为控制帖子的可见性提供了有价值的功能。感谢就此事进行的讨论。

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [2023 年3 月 24 日 08:00 UTC](https://meta.discourse.org/t/can-plugins-achieve-selective-reply-visibility-within-topics-and-how-can-i-create-one/259143/6 "2023-03-24T08:00:00Z")

</div>

是的，你说得对，我表达得不对，抱歉。但我的建议仍然有效：不要用复杂的技术来解决，而是通过稍微改变流程来解决。
