Em geral, você deve evitar substituições completas de modelos, pois elas exigem manutenção: se uma atualização do Discourse quebrar seu tema, você precisará executar um diff e verificar o que mudou.
O que você pode fazer é dar um passo para trás e modificar os dados que são passados para o modelo.
O topic-list-item é um componente Ember, então você pode usar api.modifyClass para fazer as alterações desejadas.
Por exemplo, aqui está um trecho que exibirá o emblema da categoria pai em tópicos de subcategorias abaixo do título. Se o tópico estiver na categoria principal, o código não terá efeito.
<script type="text/discourse-plugin" version="0.8">
const { on } = require("discourse-common/utils/decorators");
// IDs das categorias pai
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>