# 限制答案到信任级别

**URL:** <https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032>\
**Category:** Support\
**Created:** [2022年四月3日 22:26 UTC](https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032 "2022-04-03T22:26:11Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![j3ang](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j3ang/32/251087_2.png) [@j3ang](https://meta.discourse.org/u/j3ang)\
**Post date:** [2022年四月3日 22:26 UTC](https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032/1 "2022-04-03T22:26:11Z")

</div>

您好，

我想知道是否有办法将答案/回复限制在特定的信任级别或用户自定义字段？我们的用户是从 WordPress 迁移过来的，拥有不同的会员级别。我们不希望所有用户都能查看答案，除非他们达到了某个会员级别。

---

<div class="post-metadata">

**Author:** ![HAWK](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hawk/32/86627_2.png) [@HAWK](https://meta.discourse.org/u/HAWK)\
**Post date:** [2022年四月4日 03:50 UTC](https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032/2 "2022-04-04T03:50:39Z")

</div>

> [@j3ang](#):
>
> 除非达到一定的会员等级才能查看答案。

是查看还是回复？这两者有很大的区别。

---

<div class="post-metadata">

**Author:** ![j3ang](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j3ang/32/251087_2.png) [@j3ang](https://meta.discourse.org/u/j3ang)\
**Post date:** [2022年四月4日 03:56 UTC](https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032/3 "2022-04-04T03:56:37Z")

</div>

@HAWK，啊抱歉，回复。他们可以看到主题和回复，但除非达到一定级别，否则不应该能够回复。

---

<div class="post-metadata">

**Author:** ![HAWK](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hawk/32/86627_2.png) [@HAWK](https://meta.discourse.org/u/HAWK)\
**Post date:** [2022年四月4日 03:59 UTC](https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032/4 "2022-04-04T03:59:02Z")

</div>

是的，您可以在类别级别进行设置。添加每个信任级别组并授予其适当的权限。

 ![image](https://global.discourse-cdn.com/meta/original/3X/3/0/308dd3d30fb29ce123b1006e49c6e668e663f98d.png)

---

<div class="post-metadata">

**Author:** ![j3ang](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j3ang/32/251087_2.png) [@j3ang](https://meta.discourse.org/u/j3ang)\
**Post date:** [2022年四月4日 04:56 UTC](https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032/5 "2022-04-04T04:56:21Z")

</div>

如果我们确实想隐藏答案，而不仅仅是限制回复权限，该怎么办？“查看”列呈灰色显示。

---

<div class="post-metadata">

**Author:** ![HAWK](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hawk/32/86627_2.png) [@HAWK](https://meta.discourse.org/u/HAWK)\
**Post date:** [2022年四月4日 05:07 UTC](https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032/6 "2022-04-04T05:07:02Z")

</div>

恐怕你不能这么做。

---

<div class="post-metadata">

**Author:** ![j3ang](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j3ang/32/251087_2.png) [@j3ang](https://meta.discourse.org/u/j3ang)\
**Post date:** [2022年四月4日 05:28 UTC](https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032/7 "2022-04-04T05:28:14Z")

</div>

是否可以使用自定义插件？我怀疑通过 JavaScript 读取当前用户并隐藏整个答案部分并不难？

---

<div class="post-metadata">

**Author:** ![HAWK](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hawk/32/86627_2.png) [@HAWK](https://meta.discourse.org/u/HAWK)\
**Post date:** [2022年四月4日 05:32 UTC](https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032/8 "2022-04-04T05:32:58Z")

</div>

抱歉，我的意思是它无法开箱即用。几乎任何事情都可以通过自定义插件实现！

---

<div class="post-metadata">

**Author:** ![j3ang](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j3ang/32/251087_2.png) [@j3ang](https://meta.discourse.org/u/j3ang)\
**Post date:** [2022年四月5日 00:13 UTC](https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032/9 "2022-04-05T00:13:49Z")

</div>

我正在尝试通过自定义插件来完成此操作。我认为通过编辑覆盖 `postsToRender` 变量，我几乎已经完成了。

```plaintext
  TopicRoute.reopen({
    setupController(controller, model) {
      this._super(controller, model);
      topicController = controller;
      console.log(topicController);
      let userPrivileged = userCanViewAnswers(topicController.currentUser);

      const postStream = topicController.get("model.postStream");
      window.postStream = postStream;
      window.topicController = topicController;

      topicController.postsToRender = userPrivileged ? topicController.postsToRender : topicController.postsToRender.posts.filter(p=>p.post_number == 1);

    }
  });

function userCanViewAnswers(user){
    let user_groups = user.groups.map(g => g.name);
    return user_groups.includes('privileged');
}

```

它似乎会在页面短暂显示“未找到错误”，然后在硬刷新页面或返回主页后正确重新加载。

我正在使用 MacOS Docker 开发镜像，速度有点慢。

抱歉，我对 discourse 代码库还不熟悉。  
在加载主题时，有没有更好的方法来拦截帖子？

---

<div class="post-metadata">

**Author:** ![j3ang](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j3ang/32/251087_2.png) [@j3ang](https://meta.discourse.org/u/j3ang)\
**Post date:** [2022年四月5日 18:29 UTC](https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032/10 "2022-04-05T18:29:04Z")

</div>

我看到我应该重新打开 Controller。

```plaintext
  TopicController.reopen({
    @discourseComputed(
    "model.postStream.posts",
    "model.postStream.postsWithPlaceholders"
  )
    postsToRender(posts,postsWithPlaceholders ){
      let userPrivileged = userCanViewAnswers(this.currentUser);
      return userPrivileged
      ? (this.capabilities.isAndroid ? posts : postsWithPlaceholders)
      : (this.capabilities.isAndroid ? posts.slice(0, 1) : postsWithPlaceholders.slice(0, 1));
    }
  })

```

---

<div class="post-metadata">

**Author:** ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)\
**Post date:** [2022年五月5日 18:29 UTC](https://meta.discourse.org/t/restrict-answers-to-trust-levels/223032/11 "2022-05-05T18:29:48Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
