覆盖投票默认值,使 public=true

我是新手,但我想解决这个问题,所以我问了 chat-gpt:

这是答案:

你找到的脚本是一个很好的开始。它修改了 poll-ui-builder 控制器,以便在控制器调用 onShow() 函数时将 publicPoll 属性设置为 true。这确实打算添加为一个主题组件。

但是,代码可能无法正常工作,因为执行顺序。原始的 onShow() 方法将 publicPoll 设置为 false,然后修改将其设置为 true

正确的方法是先调用父类的 onShow 方法,然后将 publicPoll 设置为 true

<script type="text/discourse-plugin" version="0.8">
api.modifyClass("controller:poll-ui-builder", {
  onShow() {
    this._super(...arguments);
    this.set('publicPoll', true);
  }
});
</script>

你可以通过以下步骤将此脚本添加到你的主题中:

  1. 进入 Discourse 管理仪表板。
  2. 在“自定义”部分下,单击“主题”。
  3. 选择要修改的主题。
  4. 在主题编辑屏幕中,单击“编辑 CSS/HTML”。
  5. 在左侧边栏中,单击“</> Common”。
  6. 将上面的脚本粘贴到“</> Common”部分。
  7. 单击“保存”按钮。

这将把更改应用到你的主题。请记住,主题更改仅应用于使用该特定主题的用户。如果你有多个主题,则需要将此修改添加到每个主题。

另外,请记住清除浏览器缓存或执行硬重新加载,以确保正确加载更改。

我将尝试按照这些步骤与我们的论坛管理员一起操作,但这需要一些时间,如果这里有人想先尝试一下并提供反馈,我将非常高兴。

另外,我想改变 UI 的行为,我想跳过简单的屏幕,所以我再次问了 chat-gpt:

在你当前的 এটা 码中,扩展视图由 showAdvanced 属性控制。如果将其设置为 true,则会显示扩展视图。

要始终显示扩展视图,你可以修改 poll-ui-builder 控制器中的 onShow() 方法,将 showAdvanced 设置为 true。你可以将此修改添加到你之前创建的主题组件中。这是更新后的脚本:

<script type="text/discourse-plugin" version="0.8">
api.modifyClass("controller:poll-ui-builder", {
  onShow() {
    this._super(...arguments);
    this.set('publicPoll', true);
    this.set('showAdvanced', true);
  }
});
</script>

再次,请记住按照我之前概述的步骤将此脚本添加到你的主题中。保存脚本后,加载投票 UI 时应始终显示扩展视图。

同样,请记住清除浏览器缓存或执行硬重新加载,以确保正确加载更改。

我想尝试自己测试一下,但如前所述,我只是我们网站的版主,而不是管理员,所以这需要几天或几周的时间。

2 个赞