您好,
我想知道是否有办法将答案/回复限制在特定的信任级别或用户自定义字段?我们的用户是从 WordPress 迁移过来的,拥有不同的会员级别。我们不希望所有用户都能查看答案,除非他们达到了某个会员级别。
您好,
我想知道是否有办法将答案/回复限制在特定的信任级别或用户自定义字段?我们的用户是从 WordPress 迁移过来的,拥有不同的会员级别。我们不希望所有用户都能查看答案,除非他们达到了某个会员级别。
是查看还是回复?这两者有很大的区别。
@HAWK,啊抱歉,回复。他们可以看到主题和回复,但除非达到一定级别,否则不应该能够回复。
如果我们确实想隐藏答案,而不仅仅是限制回复权限,该怎么办?“查看”列呈灰色显示。
恐怕你不能这么做。
是否可以使用自定义插件?我怀疑通过 JavaScript 读取当前用户并隐藏整个答案部分并不难?
抱歉,我的意思是它无法开箱即用。几乎任何事情都可以通过自定义插件实现!
我正在尝试通过自定义插件来完成此操作。我认为通过编辑覆盖 postsToRender 变量,我几乎已经完成了。
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 代码库还不熟悉。
在加载主题时,有没有更好的方法来拦截帖子?
我看到我应该重新打开 Controller。
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));
}
})
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.