一般的には、完全なテンプレートの上書きは避けるべきです。Discourse のアップデートでテーマが壊れた場合、差分を実行して何が変わったかを確認するメンテナンスが必要になるためです。
その代わりに、テンプレートに渡されるデータ自体を変更するというアプローチをとることをお勧めします。
topic-list-item は Ember コンポーネントなので、api.modifyClass を使用して必要な変更を加えることができます。
例えば、以下のスニペットは、サブカテゴリのトピックでタイトル下に親カテゴリのバッジを表示するものです。トピックがメインカテゴリにある場合、このコードは効果を持ちません。
<script type="text/discourse-plugin" version="0.8">
const { on } = require("discourse-common/utils/decorators");
// 親カテゴリの ID
const targetCategoryIds = [9, 15, 50];
const useParentCategory = function () {
const parentCategory = this.attrs.topic.category.parentCategory;
const switchToParent = parentCategory && targetCategoryIds.includes(parentCategory.id)
if (switchToParent) {
this.attrs.topic.set("category", parentCategory);
}
};
api.modifyClass("component:topic-list-item", {
@on("didReceiveAttrs")
setCategory() {
useParentCategory.call(this);
}
});
api.modifyClass("component:latest-topic-list-item", {
@on("didReceiveAttrs")
setCategory() {
useParentCategory.call(this);
}
});
</script>