观看广告获积分奖励(V2.1)
# 观看广告获积分奖励 (mcviewbonus)
Discuz! X5.0 插件 - 用户观看广告满指定秒数后领取积分,支持单广告独立设置、多广告权重随机展示、过期积分自动回收、后台数据看板、用户奖励排行榜。
## 插件信息
- **插件名称**: 观看广告获积分奖励
- **标识符**: mcviewbonus
- **作者**: 墨城扫地客
- **作者网站**: 12350.cc
- **版本**: 2.1.0
- **运行环境**: Discuz! X5.0.2 + PHP 8.2 + MySQL 5.7
## 功能特性
1. **前台广告观看**: 展示广告(后台配置广告代码),观看满指定秒数后点击按钮领取积分
2. **积分直接发放**: 观看完成后自动发放到用户 Discuz 账户指定类型积分(extcredits1-8),带有效期
3. **单广告独立设置**: 每条广告可单独设置通用/电脑版/手机版的观看秒数和奖励积分,未设置则使用全局默认
4. **多广告权重随机**: 支持多条广告,按权重随机展示
5. **积分有效期(分钟)**: 获得的积分在指定分钟数后自动过期清零(支持实时过期检测+计划任务回收)
6. **用户奖励排行榜**: 前台展示用户看广告获得积分的累计/今日排行榜
7. **后台数据看板**: 累计发放、累计过期、趋势图、当前配置概览
8. **过期积分自动回收**: 计划任务每天凌晨3点自动回收过期积分
9. **页面名称可配置**: 后台可自定义前台三个页面的名称
10. **手机端适配**: 独立手机版页面,纯插件内容,自适应布局
11. **导航菜单自动添加**: 安装后自动添加到网站顶部主导航
12. **系统积分流水同步**: 积分变动同步写入 Discuz 系统积分记录,个人设置中可查
13. **广告合规标识**: 明确标注「广告」,支持随时关闭,关闭后计时暂停
14. **防广告拦截**: CSS类名使用 promo 前缀,避免被浏览器广告拦截插件屏蔽
15. **插件默认页**: 访问 plugin.php?id=mcviewbonus 自动跳转到观看广告页
## 目录结构
```
source/plugin/mcviewbonus/
├── plugin.class.php # 插件核心类(含自检建表/补变量/导航修复)
├── mcviewbonus.inc.php # 插件默认入口(跳转到观看广告页)
├── watch.inc.php # 前台观看广告模块
├── wallet.inc.php # 前台积分记录模块
├── rank.inc.php # 前台用户奖励排行榜模块
├── main.inc.php # 后台数据看板
├── ads.inc.php # 后台广告管理
├── logs.inc.php # 后台积分流水
├── install.php # 安装脚本(建表+示例广告+导航菜单)
├── uninstall.php # 卸载脚本(删表+删导航)
├── cron_expire_points.php # 过期积分回收计划任务
├── discuz_plugin_mcviewbonus.json# 插件安装包(JSON格式)
├── README.md # 说明文档
├── i18n/SC_UTF8/
│ └── lang_plugin.php # 语言包
├── table/
│ ├── table_mcviewbonus_ads.php # 广告表模型
│ ├── table_mcviewbonus_wallet.php # 钱包表模型
│ ├── table_mcviewbonus_log.php # 流水表模型
│ └── table_mcviewbonus_claim.php # 领取记录表模型
└── template/
├── watch.htm # 桌面版广告页模板
├── wallet.htm # 桌面版积分记录模板
├── rank.htm # 桌面版排行榜模板
└── touch/
├── watch.php # 手机版广告页(自包含HTML)
├── wallet.php # 手机版积分记录页(自包含HTML)
└── rank.php # 手机版排行榜页(自包含HTML)
```
## 安装方法
1. 将 `mcviewbonus` 目录上传到服务器的 `source/plugin/` 目录下
2. 登录 Discuz 后台 → 应用 → 插件 → 导入插件
3. 选择 `discuz_plugin_mcviewbonus.json` 文件导入
4. 点击「安装」按钮完成安装
5. 安装后进入插件「设置」,配置积分类型、奖励数量、有效期等参数
6. 在「广告管理」中添加广告代码
7. 安装后自动在网站顶部主导航添加「观看广告」入口
## 前台访问地址
- 观看广告: `plugin.php?id=mcviewbonus:watch`
- 积分记录: `plugin.php?id=mcviewbonus:wallet`
- 奖励排行榜: `plugin.php?id=mcviewbonus:rank`
- 插件默认页: `plugin.php?id=mcviewbonus`(自动跳转到观看广告)
## 后台配置项
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| 积分类型 | 发放到用户账户的扩展积分字段(extcredits1-8) | extcredits1 |
| 每次奖励数量(全局) | 每次观看广告获得的积分(单广告未设置时使用) | 10 |
| 最少观看秒数(全局) | 需观看满多少秒才可领取(单广告未设置时使用) | 30 |
| 每日领取上限 | 每个用户每天最多领取次数,0=不限制 | 10 |
| 积分有效期(分钟) | 积分多少分钟后过期,0=永不过期 | 60 |
| 观看广告页名称 | 前台观看广告页面标题和导航名称 | 观看广告 |
| 积分记录页名称 | 前台积分记录页面标题和导航名称 | 积分记录 |
| 排行榜页名称 | 前台排行榜页面标题和导航名称 | 奖励排行榜 |
## 广告管理
每条广告可设置:
- 广告标题
- 广告代码(支持HTML/JS/iframe广告代码)
- 权重(越大展示概率越高)
- **通用最少观看秒数**(0=使用全局设置,电脑版和手机版均生效)
- **通用奖励积分**(0=使用全局设置,电脑版和手机版均生效)
- **电脑版最少观看秒数**(0=使用通用/全局设置,仅PC端生效)
- **电脑版奖励积分**(0=使用通用/全局设置,仅PC端生效)
- **手机版最少观看秒数**(0=使用通用/全局设置,仅手机端生效)
- **手机版奖励积分**(0=使用通用/全局设置,仅手机端生效)
- 是否启用
**设置优先级**:端专属设置(电脑版/手机版)> 广告通用设置 > 全局设置
例如:某广告设置了电脑版奖励20积分、手机版奖励15积分,通用奖励10积分,全局奖励5积分。则PC端用户看这个广告得20积分,手机端用户得15积分。如果只设置了通用奖励10积分,则两端都得10积分。
## 数据库表
- `pre_mcviewbonus_ads` - 广告表
- `pre_mcviewbonus_wallet` - 用户钱包统计表
- `pre_mcviewbonus_log` - 积分流水表
- `pre_mcviewbonus_claim` - 每日领取记录表
## 伪静态配置(可选)
如需使用 `mcviewbonus.html` 形式的URL,在 nginx 配置中添加(不修改默认规则):
<font size="3">```nginx</font>
<font size="3">rewrite ^([^\.]*)/mcviewbonus\.html$ $1/plugin.php?id=mcviewbonus last;</font>
<font size="3">```</font>
放在系统默认插件伪静态规则之前。
## 注意事项
- 本插件不修改任何 Discuz 核心文件,所有代码在插件目录内
- 手机端采用自包含HTML页面,不依赖 Discuz 手机版模板引擎(X5 独立插件页面手机端限制)
- 积分发放使用 Discuz 原生 `updatemembercount` 函数,与论坛积分系统完全兼容,变动记录同步到系统积分流水
- 过期积分回收同时支持计划任务(每天3点)和实时检测(用户访问插件页面时自动检测)
- 插件含自检修复机制:访问后台页面时自动检测并补建缺失的数据表、配置变量、导航菜单
- 广告容器CSS类名使用 promo 前缀,避免被夸克等浏览器的广告拦截功能屏蔽
稍后将更新2.1.1版本
新增后台可以设置插件默认首页 赞(òωó)👍必须点赞👍 听说2.2版本在路上了?
页:
[1]