匿名ユーザーのグループメンバーシップに基づいて、ユーザープロファイルテンプレートをオーバーライドするテーマコンポーネントを作成しようとしています。現在のユーザーがスタッフでない限り、匿名ユーザーのプロファイルでは #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 は初めてです。