我正在尝试创建一个主题组件,该组件根据所查看用户的组成员身份来覆盖用户配置文件模板。我希望匿名用户的个人资料根本不显示“#user-content”区域,除非当前用户是工作人员。我已经创建了一个匿名用户会自动添加到的组,但我在有条件地覆盖模板时遇到了一些麻烦。
根据使用主题覆盖 Discourse 模板 和 为某些用户配置文件添加背景视频,我尝试像这样覆盖 user/summary.hbs:
<script type="text/discourse-plugin" version="0.8">
const TARGET_GROUP = "anon"
api.registerConnectorClass('above-user-summary-stats', 'user-summary', {
setupComponent(args, component) {
const inGroup = [...args.model.groups].filter(g => g.name === TARGET_GROUP)
const isAnon = inGroup.length ? true : false;
component.setProperties({isAnon})
}
});
</script>
<script type="text/x-handlebars" data-template-name="user/summary">
<DSection @pageClass="user-summary" @tagName="">
<div class="user-content" id="user-content">
<PluginOutlet
@name="above-user-summary-stats"
@args={{hash model=this.model user=this.user}}
/>
{{log isAnon}}
</div>
</DSection>
</script>
这会覆盖所有配置文件的模板,但 isAnon 未定义,所以我认为我没有理解如何在覆盖时创建供 handlebars 检查的逻辑,而不是添加到插件出口。
registerConnectorClass 是否适用于此?这里是否需要模板覆盖?我已经查看了插件 API 和 User.rb,并弄清楚了如何检查当前用户是否处于匿名模式,但除了组之外,我没有找到任何可以轻松访问的来检查所查看用户是否是匿名的。我熟悉 Rails、js 和 handlebars,但我是 Ember 和 Discourse 的新手。