在帖子页内打赏作者,支持自定义金额、留言、帖子内打赏榜、全站排行榜、防刷策略与后台撤销。
功能特性
积分打赏 — 支持
credits/golds/rmbs等多种积分类型,通过框架CreditsService事务扣款入账自定义金额 + 预设快捷按钮 — 后台可配置最多 6 个预设金额,用户也可手动输入
打赏留言 — 可选开启,支持自定义最大字符数
帖子内打赏榜 — 在帖子页嵌入打赏排行卡片,显示用户头像、留言、金额
全站排行榜 — 打赏达人榜 + 收赏达人榜,独立分页展示
防刷策略 — 同帖冷却时间、每日单用户累计上限、帖子发布最小年龄限制
权限控制 — 按用户组白名单限制打赏人和被打赏人
后台撤销 — 管理员可撤销打赏记录,自动退款并扣回(带原因记录)
站内通知 — 打赏成功后自动发送通知给被打赏人
三通道响应 — 同时支持 htmx / AJAX / 传统 form 提交,适配不同前端场景
暗色模式 — 通过
prefers-color-scheme: dark自动适配移动端适配 — 桌面端按钮自动重排至收藏按钮之后,移动端使用 chip 样式
安装
将
Laity_tip目录放入plugin/目录进入后台 → 插件管理 → 找到「打赏插件」→ 点击安装
安装脚本会自动创建数据表、写入默认设置、预热缓存
安装后点击「设置」进行配置
插件目录名必须为
Laity_tip(大小写敏感),否则框架无法识别。
配置说明
基本设置
启用打赏:总开关,关闭后前台所有打赏 UI 隐藏(默认:开启)
使用积分类型:对应 user 表字段名,可选
credits/golds/rmbs(默认:credits)单次最小金额:最小打赏额度(默认:
1)单次最大金额:最大打赏额度(默认:
10000)每日单用户打赏上限:
0表示不限(默认:0)预设金额:弹窗快捷按钮,最多 6 个,用英文逗号分隔(默认:
1, 5, 10, 50, 100)
留言设置
允许留言:是否允许打赏时附带留言(默认:开启)
留言最大字符数:留言内容长度上限(默认:
50)
防刷设置
冷却时间:同一用户对同一帖子的打赏间隔,单位秒,
0表示不限(默认:60)帖子最小年龄:帖子发布后多久才允许被打赏,单位分钟,
0表示不限(默认:5)允许自打赏:作者是否可给自己帖子打赏(默认:关闭)
权限控制
允许打赏的用户组:留空表示所有用户组均可(默认:不限)
允许接收打赏的用户组:留空表示所有用户组均可(默认:不限)
展示设置
打赏榜显示条数:帖子页内嵌排行榜的显示数量(默认:
5)排行页每页条数:全站排行榜分页大小(默认:
20)在帖子页显示打赏信息:显示总额和打赏榜卡片(默认:开启)
显示打赏按钮:在帖子底部互动区显示打赏按钮(默认:开启)
启用全站排行页:是否开放独立的全站排行榜页面(默认:开启)
文件结构
plugin/Laity_tip/
├── conf.json # 插件元信息 & hook 注册
├── install.php # 安装脚本(建表、写设置、预热缓存)
├── uninstall.php # 卸载脚本(删表、清设置、清缓存)
├── upgrade.php # 升级脚本(幂等迁移)
├── setting.php # 后台设置控制器
├── README.md # 本文件
├── model/
│ └── LaityTipService.php # 核心服务类(校验、事务、查询、头像渲染、缓存)
├── route/
│ ├── thread_tip.php # 打赏提交路由(POST,三通道响应)
│ ├── laity_tip_open.php # 打赏弹窗渲染
│ ├── laity_tip_revoke.php # 撤销打赏
│ ├── laity_tip_log.php # 打赏记录管理(后台)
│ ├── laity_tip_rank.php # 全站排行榜页
│ ├── laity_tip_sent.php # 我发出的打赏
│ ├── laity_tip_received.php # 我收到的打赏
│ └── laity_tip_label.php # 打赏信息标签
├── hook/
│ ├── model_inc_file.php # 注册 Service + 缓存 key
│ ├── model_route_table_end.php # 注册路由
│ ├── model_thread_delete_end.php # 删帖时清理打赏记录
│ ├── model_post_delete_end.php # 删楼时清理打赏记录
│ ├── index_route_case_end.php # 前台路由派发
│ ├── admin_index_route_case_end.php # 后台路由派发
│ ├── lang_zh_cn_bbs.php # 语言包
│ ├── thread_action_bar_body.htm # 桌面端打赏按钮
│ ├── thread_action_bar_top.htm # 移动端打赏按钮
│ ├── thread_message_actions_after.htm # 楼层打赏入口
│ ├── thread_plugin_body.htm # 帖子内打赏榜
│ ├── my_sidebar_nav_after.htm # 用户中心侧栏导航
│ ├── my_sidebar_nav_credits_before.htm # 积分侧栏入口
│ ├── header_link_after.htm # CSS 注入
│ └── footer_js_after.htm # JS 注入
├── static/
│ ├── css/laity_tip.css # 插件样式(含暗色模式)
│ └── js/laity_tip.js # 前端 JS(弹窗拉取、事件委托、按钮重排)
└── view/htm/
├── setting.htm # 后台设置页
├── laity_tip_log.htm # 打赏记录列表
├── laity_tip_rank.htm # 排行榜页
├── laity_tip_sent.htm # 发出打赏列表
├── laity_tip_received.htm # 收到打赏列表
└── laity_tip_thread_rank.htm # 帖子内打赏榜组件
技术实现
Hook 注入点
thread_action_bar_body.htm/thread_action_bar_top.htm:在帖子底部互动区注入打赏按钮(桌面端 / 移动端)thread_message_actions_after.htm:在楼层操作区注入打赏入口thread_plugin_body.htm:在帖子页嵌入打赏榜卡片header_link_after.htm:在前台<head>中注入 CSS 样式表footer_js_after.htm:在前台底部注入前端 JS 逻辑model_inc_file.php:注册 Service 类和缓存 keymodel_route_table_end.php:注册前台和后台路由model_thread_delete_end.php/model_post_delete_end.php:删帖/删楼时清理关联打赏记录my_sidebar_nav_after.htm/my_sidebar_nav_credits_before.htm:用户中心侧栏导航入口
主题适配
CSS 通过 @media (prefers-color-scheme: dark) 覆盖以下元素实现暗色模式:
打赏榜卡片背景、边框
头像边框
硬币图标颜色
按钮默认颜色
用户/留言列分隔线
数据表
CREATE TABLE laity_tip (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
tid int(10) unsigned NOT NULL DEFAULT 0,
pid int(10) unsigned NOT NULL DEFAULT 0,
from_uid int(10) unsigned NOT NULL DEFAULT 0,
to_uid int(10) unsigned NOT NULL DEFAULT 0,
credits int(10) unsigned NOT NULL DEFAULT 0,
credit_type varchar(32) NOT NULL DEFAULT '',
message varchar(255) NOT NULL DEFAULT '',
status tinyint(1) NOT NULL DEFAULT 1 COMMENT '1=有效 0=已撤销',
create_date int(11) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (id),
KEY tid (tid),
KEY from_uid (from_uid),
KEY to_uid (to_uid),
KEY status_date (status, create_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
卸载
进入后台 → 插件管理 → 找到「打赏插件」→ 点击卸载
卸载会自动删除数据表、清理插件设置和缓存。
兼容性
XiunoBBS v1.1.1
PHP 7.2+(使用
Throwable接口)MySQL 5.7+ / MariaDB 10.2+(utf8mb4)
框架
CreditsService(积分扣款/入账)可选:框架
CacheHelper(查询缓存加速)





