创建和管理投票

:bookmark: 本指南说明如何在 Discourse 中创建投票,以便就任何主题收集用户投票。

:person_raising_hand: 所需用户级别:所有用户

:information_source: 默认情况下,Discourse 中启用了投票,信任等级 1 或更高用户可以创建投票。站点管理员可以通过站点设置 poll create allowed groups 调整谁可以创建投票,并通过站点设置 poll enabled 禁用投票。

从工具栏创建投票

创建投票的最简单方法是使用投票构建器。可以通过编辑器中 选项菜单访问投票构建器,它允许您创建投票而无需知道确切的语法。

要显示高级选项,请按 :gear: 图标。这将显示不同的投票选项,例如投票是否自动关闭、允许投票的组、选择条形图还是饼图等。

投票选项

投票类型:

  • 单选:默认投票类型。用户可以从投票中选择一个选项。
  • 多选:用户可以从投票中选择多个选项。
    • 投票创建者还必须定义用户可以选择的选项的最小数量和最大数量。默认情况下,最小值为 1,最大值为投票选项的数量。
  • 数字评分:用户可以选择一个数字。
    • 投票创建者还必须定义数字评分的最小值、最大值和步长。例如,如果最小值为 2,最大值为 10,步长为 2,则选项将是 2、4、6、8 和 10。
  • 排序选择:用户按偏好顺序对所有选项进行排名。赢家使用即时决选投票(Instant Run-off Voting)确定——在每轮中,得票最少的首选选项被淘汰,其选票重新分配,直到一个候选人获得多数票或出现平局。

结果:

  • 始终可见:默认的投票结果。无论用户是否投票,他们都可以随时查看投票结果。
  • 投票后可见:用户必须先投票才能查看投票结果。
  • 投票关闭时:只有在投票关闭后才会显示投票结果。
  • 仅限工作人员:只有站点工作人员可以看到投票结果。

允许的组:

允许投票创建者限制哪些组可以参与投票。不在列出组中的用户可以查看投票,但不能投票。默认情况下,所有用户都可以参与,没有组限制。

图表类型:

对于单选或多选投票,选择是显示条形图还是饼图。数字评分或排序选择投票不可用。

显示谁投票了:

默认启用,这允许可以看到投票结果的人同时查看每个投票用户的具体选择。(仅限条形图类型)

自动关闭投票:

允许投票创建者设置一个日期/时间让投票自动关闭。与手动关闭的投票不同,自动关闭的投票无法重新打开。

发布后允许添加或删除选项(动态):

启用后,即使编辑窗口过期,也可以添加或删除投票选项,而不会清除未更改选项上的投票。这必须在首次创建投票时设置——现有投票创建后无法转换为动态。

包含图片

投票甚至可以包含图片!使用投票构建器插入投票后,可以将图片上传到帖子中并手动添加到投票中。上传的图片应较小,或调整为以较低的百分比显示:

[poll type=regular]
* ![image|690x458,25%](upload://2u570X7kQiPJQaJD1Bd8MLDHDNB.jpeg)
* ![image|690x334,25%](upload://35fmeFw8RMywSxIc4lbCb8UHPaT.jpg)
* ![image|690x499,25%](upload://xSDkRwmuj1pNc2QXKzthfXRlwsX.jpg)
[/poll]
[poll type=regular]
* Cat: a small domesticated carnivorous mammal with soft fur, a short snout, and retractile claws.
![image|690x458,25%](upload://2u570X7kQiPJQaJD1Bd8MLDHDNB.jpeg)
* Dog: a domesticated carnivorous mammal that typically has a long snout, an acute sense of smell, and a barking, howling, or whining voice.
![image|690x334,25%](upload://35fmeFw8RMywSxIc4lbCb8UHPaT.jpg)
* Fish: a limbless cold-blooded vertebrate animal with gills and fins and living wholly in water.
![image|690x499,25%](upload://xSDkRwmuj1pNc2QXKzthfXRlwsX.jpg)
[/poll]
  • Cat: a small domesticated carnivorous mammal with soft fur, a short snout, and retractile claws.
  • Dog: a domesticated carnivorous mammal that typically has a long snout, an acute sense of smell, and a barking, howling, or whining voice.
  • Fish: a limbless cold-blooded vertebrate animal with gills and fins and living wholly in water.
0 voters

包含相对日期

投票也可以包含相对日期!与添加图片类似,使用投票构建器插入投票后,您可以通过“插入日期/时间”编辑器按钮在投票选项中插入日期:

[poll type=regular]
* [date=2019-10-13 timezone="Europe/Paris"]
* [date=2019-10-12 timezone="Europe/Paris"]
* [date=2019-10-11 timezone="Europe/Paris"]
[/poll]
  • 2019-10-12T22:00:00Z
  • 2019-10-11T22:00:00Z
  • 2019-10-10T22:00:00Z
0 voters

在一篇文章中包含多个投票

如果在单个帖子中使用多个投票(像这个!),每个投票都需要一个唯一的名称,否则它们将无法工作。使用投票构建器时,每个额外的投票都会被连续编号,但您也可以通过添加 name="poll_name" 作为参数手动完成:

[poll name="poll_1"]
1. option one
2. option two
3. option three
[/poll]

[poll name="poll_3" type=multiple min=2 max=3]
- option one
- option two
- option three
- option four
[/poll]

[poll name="dave" type=number min=2 max=10 step=2]
[/poll]

手动创建投票

虽然投票构建器是最简单的方法,但也可以在编辑器中手动创建和编辑投票。

要创建简单的投票,请用 [poll][/poll] 包围一个 markdown 列表:

[poll]
* option one
* option two
* option three
[/poll]

:information_source: 任何 markdown 列表都可以工作,包括使用连字符 - 或数字而不是星号 *

这将产生以下结果:

  1. option one
  2. option two
  3. option three
0 voters

要手动创建更复杂的投票,可以在投票标签中添加附加参数。例如:

[poll type=multiple results=on_vote min=1 max=2 public=true chartType=pie groups=trust_level_1 close=3024-12-31T00:00:00.000Z]
# Do you like polls?
* Yes
* No
* Maybe
[/poll]
Do you like polls?
  • Yes
  • No
  • Maybe
0 voters

(尽管并非所有选项都适用于所有投票 :slight_smile:

其他可用的投票类型包括 type=ranked_choice 用于即时决选投票,可以添加 dynamic=true 参数以允许在发布后修改选项。

使用投票构建器是了解这些附加参数格式以供将来使用的绝佳方式。

常见问题

任何人都可以投票吗?

即使投票本身没有组投票限制,用户也必须能够回复创建投票的主题才能参与。只有“查看”权限的用户将无法投票。

投票可以编辑吗?

编辑投票时会清除所有选票,以确保投票创建者无法更改用户投票的选择。因此,默认情况下,投票只能在创建后的 5 分钟宽限期内编辑。

:exclamation: 一旦编辑了投票并清除了选票,就无法恢复选票

动态投票(dynamic=true)是一个例外,它允许在编辑窗口后添加或删除选项,同时保留现有选项上的选票。

我可以导出投票数据以供进一步分析吗?

工作人员可以使用 Discourse Data Explorercsv 格式导出投票数据,可以将其导入他们选择的数据分析程序中。

63 个赞

这可能看起来像一个新手问题,但我确实有一个疑问。

假设我创建了一个投票,其中我设置了投票结果在投票后立即可见。然后我意识到我的错误,我本应该在投票结束后才显示结果。那么,有没有办法编辑当前的投票,以便将该投票的可见性从“始终可见”更改为“投票结束后可见”,这是在构建投票设置中可从齿轮图标访问的选项?

或者,我必须删除这个投票,然后开始一个新的投票,并选择“投票结束后可见”的投票可见性设置?

我还附上了截图。

请提供建议。

如果此帖子不适合此主题,我请求版主/管理员将其移至适当的部分。

1 个赞

您可以在不删除投票的情况下进行更改。编辑帖子时,您的投票将以类似 [poll type=regular results=on_vote public=true chartType=bar] 的内容开始;您可以将“results”参数编辑为 results=on_close
不过,如果我没记错的话,编辑投票时,所有投票都会被删除,但至少您不必重新创建它。

3 个赞

确实如此。

对我来说,如果有一个选项可以重置投票,而不是被“强制”重置,会更有意义——尤其是对于这种小的调整。

我过去曾为这些类型的更改(以避免编辑触发重置)入侵过数据库,但这有点脆弱。

4 个赞

这很有帮助。

如果我告诉你们,当创建投票的管理员编辑了用于投票的主题时,主题编辑次数反而会减少而不是增加,你们会作何推断?

我的推断是,投票被删除了,然后重新开始了一个新的投票。这对投票者来说可以解释为什么主题编辑次数会减少。

例如:
用户第一次来到投票页面,投票设置是“始终可见”。该投票的主题编辑次数是 4。

当管理员被指出投票设置被设为“始终可见”时,用户随后看到投票的投票设置被改为“投票后可见”。然而,主题编辑次数却变成了 3。所以,主题编辑次数非但没有增加,反而减少了。

我的想法是,管理员删除了之前的投票,然后重新开始了一个新的投票。

1 个赞

是否可以将此文档更新为包含排序选择投票?特别是,回合是如何以及何时增加的。
提前感谢各位!

5 个赞

说得有理 @meave

我是排序选择投票的作者,这确实是个失误。

我没有 OP 的编辑权限。非常乐意有人复制此内容并按他们认为合适的方式进行格式化,或者如果转换为 Wiki,我很乐意做出贡献:

目前它的工作方式与此处描述的完全一样,这是经典的即时决选投票:

(我的投票插件分支实际上包含该示例作为单元测试!)

过程如下:

每位选民提交一份候选人排序列表。在每一轮中,我们只考虑排名第一的候选人(并关注潜在的获胜者和最差的失败者)。

  1. 计算每位候选人的第一名选票
  2. 找出得票最多的候选人
  3. 检查是否存在明确的、单一的多数,如果找到则返回获胜者(无需更多回合,停止)

如果没有:

  1. 找出得票最少的候选人
  2. 从所有选票中移除得票最少的候选人

如果选票现在都为空

  1. 报告刚刚被移除的候选人的平局(无需更多回合,停止)

否则

  1. 将所有选票向上移动,以便当第一名被某个选民的失败者占据时,第二名候选人成为他们的第一选择。

然后回合继续,直到找到多数或平局。

6 个赞

感谢 @merefield
这正是我需要的!

3 个赞

是否可以导出不同频道的每个投票结果以用于报告?

1 个赞

您可以使用数据浏览器来完成此操作。我问了 AI
“是否可以导出不同频道中每个投票的结果以用于数据浏览器报告目的?”它给出了这个查询:

SELECT  
    p.topic_id, 
    p.name AS poll_name,
    o.id AS option_id, 
    o.html AS option_text, 
    COUNT(v.id) AS vote_count
FROM polls p
JOIN poll_options o ON p.id = o.poll_id
LEFT JOIN poll_votes v ON o.id = v.poll_option_id
GROUP BY p.topic_id, p.name, o.id, o.html
ORDER BY p.topic_id, p.name, o.id;

看起来它可能会起作用?

1 个赞

您好 @pfaffman

非常感谢您的快速回复和帮助!

我将在下周某个时候尝试一下,但最有可能在假期后才能尝试。

一旦能够尝试,我会带回反馈。

此外,再次非常感谢!

1 个赞

您好,我有一个关于投票的问题。

是否可以使用 HTML 或 CSS 使其看起来比标准外观更美观?

提前致谢。

您是否在浏览器的检查器中尝试过?(右键单击并检查)如果您可以在那里做到,那么是的。

但是,Polls 使用 Chart.js,所以有很多矢量的东西。

这真的取决于您想改变什么。

3 个赞

这是一个排名投票。当文本过长时,用于做出选择的按钮应位于文本的左侧。现在文本位于按钮下方,我希望文本完全靠右,按钮与左侧文本对齐。

大家好,

有人知道是否可以以某种方式在投票中包含文本输入吗?例如,让投票者说明选择特定选项的原因?

1 个赞

“在下面评论”?

除了在主题中评论之外,不可以。

1 个赞

我明白了。谢谢你,@merefield,我正试图得到一份书面反馈,可以与投票结果一起导出。

1 个赞


为什么投票没有显示在动态消息中?只有点击后才显示。

2 个赞

啊,我认为这是投票/主题摘录的限制。我认为目前无法在主主题空间之外显示它们。

3 个赞

感谢你的回答!

3 个赞