Возможно, существует способ делать это единообразно на страницах тем и категорий, но я получил ID категории двумя разными способами… один для страниц категорий:
<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>
и аналогичный способ для страниц тем:
<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>
В примере со страницей категории можно также использовать category.name или category.slug, но в модели темы доступен только category_id, поэтому там потребуется немного больше работы, чтобы получить имя. В любом случае, использование ID может быть лучшим решением, так как оно остаётся неизменным даже при смене названия или slug категории.