¿Ocultar subcategorías sin ocultar sus temas en la lista de temas?

En general, debes evitar las sobrescrituras completas de plantillas, ya que requieren mantenimiento: tendrás que ejecutar un diff y verificar qué ha cambiado si una actualización de Discourse rompe tu tema.

Lo que puedes hacer es dar un paso atrás y modificar los datos que se pasan a la plantilla en su lugar.

El topic-list-item es un componente de Ember, por lo que puedes usar api.modifyClass para realizar los cambios que necesites.

Por ejemplo, aquí tienes un fragmento de código que mostrará la insignia de la categoría principal en los temas de subcategoría debajo del título. Si el tema está en la categoría principal, el código no tendrá efecto.

<script type="text/discourse-plugin" version="0.8">
  const { on } = require("discourse-common/utils/decorators");

  // IDs de las categorías principales
  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>