JSでカテゴリ名を取得する

トピックページとカテゴリページの両方で一貫して実現する方法があるかもしれませんが、カテゴリID を取得する方法が2つあります。カテゴリページの場合は以下の通りです。

<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.namecategory.slug を代わりに使用することもできますが、トピックモデルでは category_id しか利用できないため、名前を取得するにはもう少し作業が必要です。いずれにせよ、カテゴリ名やスラッグが変更されても一貫しているため、ID を使う方がよいでしょう。