你有没有遇到过这种情况?
自己折腾了个帝国CMS的资讯站、资源站
辛辛苦苦更内容、发外链
访客看完就走,连个登录都懒得点
用户粘性低得可怜,后台数据一片凉?
其实加个签到功能就能救一半
每天花10秒领积分
慢慢就养成用户天天来的习惯
还能靠积分搞兑换、搞等级
把死粉盘活不是梦
这篇文章我教你
不用写复杂的PHP代码
不用买第三方插件
纯靠帝国CMS自带功能
3步就能搭出能用的签到系统
现在赶紧打开你的后台
跟着一步一步来
1. 先给帝国CMS加个“积分字段” 存签到数据
说白了,签到就是记录用户的签到状态
比如今天签没签、连续签了多少天、总积分多少
帝国CMS默认的用户表没有现成的
咱们得自己加几个字段,够用就行
1.1 打开帝国CMS后台的“用户字段管理”
登录你的帝国CMS后台
找到顶部菜单栏的“用户”选项
点进去后,左边栏选“用户字段管理”
然后直接点“增加字段”按钮
接下来填3个关键字段,别填错了
1.2 先加“最后签到日期”字段
这个字段用来判断用户今天有没有签
不然人家一天刷100次就赚翻了
字段名称填“last_sign_date”
字段标识填“最后签到日期”
字段类型选“日期时间型”
剩下的默认就行,直接点“提交”
1.3 再加“连续签到天数”和“总积分”字段
连续签到天数是为了搞阶梯奖励
比如连续7天多给5积分
字段名称填“continue_sign_days”
标识填“连续签到天数”
类型选“数字型(INT)”
默认值填“0”
总积分是用来搞活动的
比如100积分换个资源包下载券
字段名称填“total_sign_points”
标识填“签到总积分”
类型选“数字型(INT)”
默认值填“0”
两个字段填完都点“提交”
然后点左边栏的“更新系统缓存”
这步很重要,不然字段用不了
避坑提醒:更新缓存后刷新一下后台
再去“用户管理”随便找个用户
看看资料页有没有新增的3个字段
有的话就说明成功了
2. 写个简单的PHP签到接口 处理签到逻辑
帝国CMS自带的“自定义PHP页面”功能
就能搞定这个接口
不用懂太深的PHP,复制粘贴改改就行
2.1 创建自定义PHP页面
回到后台顶部菜单栏
找到“模板”选项
点进去后左边栏选“自定义PHP页面”
然后点“增加自定义页面”
页面名称填“签到处理页”
文件名填“sign_do.php”
这个文件名后面要用到
别写错了
2.2 复制粘贴核心签到代码
直接把下面的代码
粘贴到“页面内容”的输入框里
然后稍微改改奖励规则就行
```
fetch1("select last_sign_date,continue_sign_days,total_sign_points from {$dbtbpre}enewsmember where userid='$userid' limit 1");
//判断今天是否已签到
if($r[last_sign_date]==$today){
echo "今天已经签过啦!";
exit();
}
//计算签到奖励
$add_points=1;
$new_continue=1;
$yesterday=date('Y-m-d',strtotime("-1 day"));
if($r[last_sign_date]==$yesterday){
$new_continue=$r[continue_sign_days]+1;
//连续7天加额外3分,连续30天加10分
if($new_continue==7){
$add_points=4;
}elseif($new_continue==30){
$add_points=11;
}else{
$add_points=$new_continue>1?2:1;
}
}
$new_total=$r[total_sign_points]+$add_points;
//更新用户数据
$empire->query("update {$dbtbpre}enewsmember set last_sign_date='$today',continue_sign_days='$new_continue',total_sign_points='$new_total' where userid='$userid'");
//输出签到成功的提示
echo "签到成功!获得{$add_points}积分,连续{$new_continue}天签到!";
db_close();
$empire=null;
?>
```
这里说一下奖励规则怎么改
代码里第26-32行是判断连续天数
想改连续多少天加多少分
直接改数字就行
比如连续3天加2分,连续7天加5分
你就改成你想要的数字
填完代码直接点“提交”
然后再点一次“更新系统缓存”
2.3 测试一下签到接口能不能用
测试方法很简单
先在前台登录你的账号
然后在浏览器地址栏输入
你的网站域名/e/extend/sign_do.php
看看会不会弹出提示
如果弹出“签到成功”就说明接口没问题
如果弹出错误提示
就检查一下字段名称、文件名、数据库前缀
帝国CMS默认的数据库前缀是phome_
如果你的不是
就把代码里的{$dbtbpre}改成你自己的
3. 在前台加个签到按钮 让用户能点
接口做好了,前台得有入口
不然用户根本不知道有这个功能
咱们可以加在用户中心、导航栏、侧边栏
随便你放哪,这里教你最简单的方法
加在用户登录后的欢迎语旁边
3.1 找到用户欢迎语的模板文件
回到后台模板模块
左边栏选“模板管理”
然后选“公共模板变量管理”
找一下有没有“[!--temp.header--]”或者类似的头部变量
如果有的话,点“修改”
找到欢迎语的位置
一般是“欢迎您,[!--username--]”这种
3.2 加个带交互的签到按钮
把下面的代码
粘贴到欢迎语的后面就行
```
每日签到
```
这段代码的意思是
点击按钮会调用刚才的接口
用弹窗显示结果
签到成功还会自动刷新页面
你可以看到用户信息里的积分和天数变了
嫌按钮丑的话
可以改改style里的颜色、字体大小
改成和你网站风格一致的
3.3 加个显示签到数据的地方
光有按钮还不够
用户得知道自己有多少积分
连续签了多少天
还是在刚才的头部模板变量里
在签到按钮后面再加这段代码
```
当前积分:[!–total_sign_points–] |
连续签到:[!–continue_sign_days–]天
```
填完之后点“提交”
再“更新系统缓存”
避坑提醒:变量符号是[!–…–]
不是帝国CMS内容里常用的[!--…--]
别写错了,不然显示不出来
现在刷新一下你的前台首页
登录账号后应该就能看到
签到按钮和积分天数了
今天第一次签会得1分
明天再签连续天数变成2分
后天3分
以此类推
搭建完之后
你可以再优化一下
比如把弹窗改成更美观的提示框
比如加个签到排行榜
比如靠积分搞资源兑换
这些都是后话了
先把最基础的功能用起来
看看用户数据有没有变好
如果有效果再慢慢完善
现在赶紧去操作吧
别等访客都走光了才后悔