条件に基づいてデフォルトカテゴリを変更する

Pavilion Event プラグインがあり、/Calendar ページが作成されます。

CSS/HTML/テーマコンポーネントを使用してカレンダーページを可能な限り使いやすく調整したいと考えています。

イベントを作成できるカテゴリはいくつかしかないため、コンポーザーのカテゴリドロップダウンを関連するカテゴリのみを含めるように正常にフィルタリングしました。

苦労しているのは、コンポーザーのデフォルトカテゴリを CSS/HTML を使用して設定することです(これにより、正しいページ(カレンダーページなど)でトリガーするための条件を使用できます)。

目標は、Discourse の他のすべての場所ではデフォルトのカテゴリが「General」になるようにすることですが、ユーザーがカレンダーページからトピックを作成している場合(このページにはすでに「New Topic」機能があります)、コンポーザーのカテゴリはデフォルトで「Event Planning」になり、「Event Planning」カテゴリに関連付けられたテンプレートがトリガーされます。

どちらの方向に向かえばよいか教えていただけますか?

ありがとうございます。

「いいね!」 1

参考情報 - これまでに取得したコード:

HTML Body

  <!-- カレンダーページであることを示すために、bodyにcalendar-pageクラスを追加します -->

  <script>
    // URLが「/calendar」で終わるかどうかを確認します
    if (window.location.href.endsWith("/calendar")) {
      // CSSルールをトリガーするためにbodyにクラスを追加します
      document.body.classList.add('calendar-page');
    }
  </script>

  <!-- カレンダー画面の「トピックの追加」を「イベントの追加」に変更します -->

  <script>
    // bodyに「hide-on-calendar」クラスが含まれているかどうかを確認します
    if (document.body.classList.contains('calendar-page')) {
      // ボタンのテキストを更新します
      const button = document.querySelector('.main-content.calendar .d-button-label');
      if (button) {
        button.textContent = 'Add Event';
      }
    }
  </script>

CSS

// イベント以外のカテゴリを非表示にする

     body.calendar-page li.select-kit-row.category-row[title]:not([title="Private Events"]):not([title="Public Events"]):not([title="Induction Sessions"]):not([title="Space Bookings"]) {
      display: none;
    }

プラグイン(この場合はイベントプラグインの「このカテゴリのトピックにイベントを追加することを許可する」設定)によって設定されたカテゴリの値を取得する方法について、何か提案があれば、ハードコーディングせずに済むので素晴らしいのですが…でも、欲張りすぎているのはわかっています。