帖子投票运维
为帖子添加内嵌投票:单选/多选、倒计时、实时结果;发帖拓展可选投票帖,列表展示投票标识。
免费
详情介绍
一、插件简介
帖子投票(vote)面向社区站点,支持在发帖时附加内嵌投票,读者在帖子详情页参与投票并查看实时结果。支持单选/多选、倒计时结束、投票前是否展示结果等策略。
适合意见征集、活动票选、社区决策等场景;投票数据与帖子绑定,无需单独页面。
- 前台入口:发帖/编辑页拓展区「投票」;帖子详情页投票卡片
- 后台入口:无独立后台菜单;管理员发帖/编辑帖子时同样可使用投票拓展
- 接口路径(若社区开启伪静态后缀,如
.html,则路径后追加后缀,下同): POST /vote/cast— 提交投票GET /vote/card— 获取投票卡片 HTML
二、核心能力
| 能力 | 说明 |
|---|---|
| 单选/多选 | 发帖时选择投票模式;多选可设最多可选几项 |
| 选项管理 | 2–20 个选项(上限由配置控制) |
| 倒计时 | 可设有效小时数,到期自动结束;0 表示不限期 |
| 结果展示 | 可配置投票前是否显示票数与比例 |
| 权限控制 | 可按用户组限制谁可发起投票 |
| 列表标识 | 帖子列表展示投票帖标识(topicMetaMap 钩子) |
| 防篡改 | 已有投票记录后,选项/模式/截止时间不可再改 |
三、依赖与安装
建议环境:
- 已安装并启用 社区(community) 插件(发帖、回帖、会员体系)
- 社区前台伪静态后缀由社区
FrontRoute::urlSuffix()决定,接口路径可能带.html等后缀
安装步骤:
- 应用中心安装并启用 帖子投票
- 在插件配置中打开「启用帖子投票」
- (可选)配置可发布用户组、选项上限、默认时长、投票前是否显示结果
- 用测试账号发帖并勾选投票,走通投票流程
数据表(安装时自动创建):
{prefix}topic_vote— 投票主表{prefix}topic_vote_option— 选项{prefix}topic_vote_ballot— 投票记录
四、应用中心基础配置
路径:应用中心 → 帖子投票 → 配置
| 配置项 | 说明 | 建议 |
|---|---|---|
| 启用帖子投票 | 总开关;关闭后前台不展示、不可参与 | 上线保持开启 |
| 可发布用户组 | 勾选后仅这些用户组可发起投票;不勾选不限制;管理员不受限 | 按需限制 |
| 选项上限 | 单次投票最多选项数(2–20) | 默认 10 |
| 默认时长(小时) | 发帖时倒计时默认值;0 = 不限期 | 默认 24 |
| 投票前显示结果 | 关闭后需投票或结束后才展示票数比例 | 默认关闭 |
五、发帖投票配置(重点)
发帖/编辑页拓展区(compose_extra 插槽)可配置:
| 项 | 说明 |
|---|---|
| 启用投票 | 勾选后保存帖子时同步投票数据 |
| 投票问题 | 必填 |
| 投票模式 | 单选 / 多选 |
| 最多可选 | 多选时有效;单选固定为 1 |
| 有效时长 | 小时数;0 不限期 |
| 选项列表 | 至少 2 项,不超过配置上限 |
注意: 帖子已有投票记录后,仅可修改标题;模式、选项、截止时间锁定。
六、前台用户流程
- 有权限的用户发帖,在拓展区勾选「投票」并填写问题、选项、模式与时长
- 发布成功后,帖子详情页展示投票卡片(
topic_after_content插槽) - 登录用户选择选项后提交(
POST /vote/cast) - 单选直接提交;多选按「最多可选」限制勾选数量
- 投票进行中可查看结果(若配置允许投票前显示,或本人已投/已结束)
- 倒计时结束后状态变为已结束,不可再投
七、后台审核与运维
本插件无独立后台管理页。运维要点:
- 违规投票帖按社区帖子管理流程处理(删帖会触发
afterTopicsDeleted清理投票数据) - 调整「可发布用户组」可即时生效,不影响已有投票
- 关闭插件后前台投票区隐藏,历史数据保留在库中
八、特殊说明
插件钩子(renderSlot):
| 插槽 | 作用 |
|---|---|
topic_after_content | 帖子详情投票卡片 |
compose_extra | 前台发帖投票表单 |
admin_topic_form | 后台发帖投票表单 |
compose_assets | 编辑器 JS/CSS 资源 |
生命周期钩子:
afterTopicSave— 帖子保存后同步投票afterTopicsDeleted— 删帖清理投票topicMetaMap— 列表页投票标识
静态资源: vote.js、vote.css、vote-editor.js
九、推荐上线清单
- 启用插件
- 配置可发布用户组(如需限制)
- 设置选项上限与默认时长
- 确认「投票前显示结果」策略
- 用普通用户发帖带投票,另一账号参与并查看结果
- 测试倒计时结束后的状态
十、常见问题
Q:发帖看不到投票拓展? 检查「启用帖子投票」、当前用户组是否在「可发布用户组」内。
Q:保存提示「投票至少需要 2 个选项」? 至少填写 2 个非空选项。
Q:已有投票后无法改选项? 设计如此,防止刷票;无投票记录前可自由修改。
Q:接口 404? 确认插件已安装启用;若社区配置了 URL 后缀,接口需带后缀(如 /vote/cast.html)。
Q:未登录能否投票? 需登录后参与,具体以控制器校验为准。
更新记录 (3)
-
v1.0.3
2026-08-25
发帖页按板块显示/隐藏入口;保存与上传接口校验板块
-
v1.0.2
2026-08-24
支持 only_active_extras:后台编辑时,没开过的拓展不显示空表单
-
v1.0.1
2026-08-24
首次发布