根据条件更改默认类别

我们有 Pavilion Event 插件,它会创建一个 /Calendar 页面。

我想使用 CSS/HTML/主题组件来调整日历页面,使其尽可能用户友好。

因为我们只允许在少数几个类别中创建活动,所以我已成功地将作曲家中的类别下拉菜单过滤,使其仅包含相关类别。

我正在努力的部分是使用 CSS/HTML 在作曲家中设置默认类别(这样我就可以使用条件在正确的页面上触发它,例如日历页面)。

目标是,在 Discourse 的其他任何地方,默认类别都是“General”,但如果用户是从日历页面创建主题(该页面已具有“新建主题”功能),则作曲家的类别将默认为“Event Planning”,并触发附加到“Event Planning”类别的模板。

有人能给我指明方向吗?

谢谢。

1 个赞

供参考 - 我到目前为止的代码:

HTML正文

  <!-- 通过添加 calendar-page 类到 body 来标记日历页面 -->

  <script>
    // 检查 URL 是否以 "/calendar" 结尾
    if (window.location.href.endsWith("/calendar")) {
      // 向 body 添加一个类来触发 CSS 规则
      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;
    }

如果有人对如何获取插件设置的类别值(在这种情况下是 Events 插件的“允许将事件添加到此类别中的主题”设置)有任何建议,这样我就不必硬编码类别了,那将是极好的……但我知道这有点贪心。