Podría haber una manera de hacerlo de forma consistente tanto en las páginas de temas como en las de categorías, pero he obtenido el ID de categoría de dos maneras diferentes… una para las páginas de categorías:
<script type="text/discourse-plugin" version="0.8">
const container = Discourse.__container__;
const controller = container.lookup('controller:navigation/category');
api.onPageChange((url, title) => {
console.log(controller.get("category.id"));
});
</script>
y una forma similar para las páginas de temas:
<script type="text/discourse-plugin" version="0.8">
const container = Discourse.__container__;
const controller = container.lookup('controller:topic');
api.onPageChange((url, title) => {
console.log(controller.get("model.category_id"));
});
</script>
En el ejemplo de la página de categoría, también puedes usar category.name o category.slug, pero con el modelo de tema solo está disponible el category_id, por lo que tendrías que hacer un poco más de trabajo allí para obtener el nombre. El ID podría ser una mejor opción de todos modos, ya que es consistente incluso si el nombre o el slug de la categoría cambian.