LayCenter简易适配文档
LayCenter包含了许多可调用的接口,以下只是冰山一角,如有需要请联系我,我再来补充
调用链接
登陆地址:
$lcp->BuildUrl('Login');
注册地址:
$lcp->BuildUrl('Reg');
重置密码地址:
$lcp->BuildUrl('ForgetPassword');
用户中心地址:
$lcp->BuildUrl('User');
账户充值地址:
$lcp->BuildUrl('User').'#User/Invest/Price';
VIP充值地址:
$lcp->BuildUrl('User').'#User/Invest/VIP';
以上方法都可以在主题模板内调用
用户中心数据:
调用用户中心配置:
$lcp->config->配置项字段名;
$lcp->config->Save(); //保存配置
调用扩展插件的配置:
(跟zblog调用数据的方法基本一致,但调用对象是$lcp)比如调用qq机器人的推送消息地址:
$lcp->Config('qqrobot')->qqroboturl;
$lcp->Config('qqrobot')->Save(); // 保存配置
VIP等级说明
用户中心有5中会员等级:普通用户、青铜VIP、白银VIP、铂金VIP、钻石VIP
以上5中名称在用户中心可以自定义名称。
普通用户:网站的普通用户,非VIP用户,或VIP过期用户;
青铜VIP:开通的会员在一月内的(一般都是开通7天)
白银VIP:开通会员在1月以上,12月以内
铂金VIP:开通超1年的会员
钻石VIP:开通永久VIP,会员身份永不过期
如果是续费会员,根据续费后的时长,也会自动升级到相应的VIP等级
用户有关的数据:
以下代码只会用 $zbp->user 作为示例代码,在主题模板中,也可以用 {$user.方法/属性}
账户余额:
$zbp->user->Price; //返回比如:5
//返回账户余额和货币名称则用下面代码
$zbp->user->Price(); //返回比如: 5积分
账户VIP等级
$zbp->user->VipType;
//根据该用户的VIP等级返回对应纯数标识
//0:普通用户 1:青铜VIP 2:白银VIP 3:铂金VIP 4:钻石VIP
账户VIP等级名称
$zbp->user->VipName;
//根据该用户的VIP等级返回对应的VIP名称:普通用户、青铜VIP、白银VIP、铂金VIP、钻石VIP
账户VIP有效期
$zbp->user->VIPExpire(); //返回比如:2019-10-12
$zbp->user->VIPExpire('Y年m月d日'); //返回比如:2019年10月12日
$zbp->user->VipTime; //返回VIP到期时间戳
账户邀请码/邀请链接
$zbp->user->InviteCode;
$zbp->user->InviteUrl;
//如果返回为空,则说明此用户没有邀请用户的权限
调用腾讯防水墙(图形验证)
需要在header.php加入 <script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
js代码:
lcp.tcaptcha(function(){
//图形验证成功后执行或未启用腾讯防水墙的情况下直接执行
},function(){
//用户关闭形验证后执行此代码
});
后端验证:
$lcp->TCaptchaVerify();
//如果图形验证失败(可能是非法操作)则会直接输出json
$lcp->TCaptchaVerify(false);
//返回 true 或 false
输出的json
{ "code": 0, "msg": "图形演示失败,请重试", "data": "", "runtime": "time:114.41ms query:7 memory:1263kb error:0" }
使用防水墙无需先判断网站管理员有没有启用了腾讯防水墙,如果未启用,会直接回调提交的代码。未启用后端代码会直接返回true
社交登陆
用 $lcp->oauth 进行数组遍历,在前台显示出社交登陆按钮。(只有启用的社交登陆,才会在此数组,所以无需用其它方法判断是否开启了某个社交登陆功能)
社交登陆唯一标识,目前有“weixin”微信“WB”微博“QQ”qq
$lcp->oauth;
//vardump结果
array(1) {
[0]=>
array(4) {
[0]=>
string(6) "weixin" //唯一标识,可以利用此项来判断是哪个社交登陆
[1]=>
string(6) "weixin" //fontawescome 图标
[2]=>
string(35) "zb_users/LayCenter/weixin/login.php" // 登陆页面地址(默认没有域名)
[3]=>
string(6) "微信" // 社交登陆名称
}
[1]=>
array(4) {
[0]=>
string(6) "QQ"
[1]=>
string(6) "..."
[2]=>
string(35) "..."
[3]=>
string(6) "..."
}
[2]=>
...
[3]=>
...
}
账号登陆数据提交
如果您主题有独特的登陆界面,可以用到下面这些说明。
需要提交的post数据:
username
password
captcha (验证码)
判断是否开启验证码用 $lcp->config->login_text_captcha
验证码ID:login
js代码:
lcp.tcaptcha(function(){ //必须先调用腾讯防水墙
layer.msg('正在登陆...',{icon: 16,time:false,shade:0.5})
lcp.ajax('login',{
username: '',
password: '',
captcha:''
},function(res){
if (res.code == 1){
layer.msg('登陆成功',{icon: 1});
window.location.reload();
}else{
layer.msg(res.msg,{icon:res.code});
}
});
});
注册数据提交
如果您主题有独特的注册界面,可以用到下面这些说明。
需要提交的数据:
Name
Password
LayCenter_Inviter (邀请码)
captcha (验证码)
判断是否启用腾讯防水墙 $lcp->config->tencent_captcha_enable 如果未启用则必须提交验证码,否则不需要
验证码id:reg
判断是否必须要提供邀请码:$lcp->config->register_need_invite_enable 如果必须,则强行验证让用户输入邀请码
js代码:
lcp.tcaptcha(function(){ //必须先调用腾讯防水墙
layer.msg('正在注册...',{icon: 16,time:false,shade:0.5})
lcp.ajax('reg',{
Name: '',
Password:'',
Email:'',
LayCenter_Inviter:'',
captcha:''
},function(res){
if (res.code == 1){
layer.msg('注册成功',{icon: 1});
}else{
layer.msg(res.msg,{icon:res.code});
}
});
});
文章发布页面
本页面必须使用layui样式,否则排版会乱,可以参考layui表单文档
文章头部插入配置项
Add_Filter_Plugin('Filter_LayCenter_PushPost_Header','function_name'); //挂载接口
function function_name($article){
echo '
<div class="layui-form-item">
<label class="layui-form-label">一个文本框</label>
<div class="layui-input-block">
<input type="text" name="meta_test" placeholder="" autocomplete="off" class="layui-input" value="'.$article->Metas->test.'">
</div>
</div>
';
}
文章正文插入内容按钮
Add_Filter_Plugin('Filter_LayCenter_PushPost_InserBtn','function_name'); //挂载接口
function function_name($article, &$insert){
$insert[] = array('欢迎使用zblog','插入一些内容');
}
侧栏附加内容
Add_Filter_Plugin('Filter_LayCenter_PushPost_OtherAttr','function_name'); //挂载接口
function function_name($article){
return '
<div class="layui-form-item">
<label class="layui-form-label">一个开关</label>
<div class="layui-input-block">
<input type="checkbox" name="meta_test1" lay-skin="switch" value="1" lay-text="ON|OFF" '.($article->Metas->test1 ? 'checked=""' : '').'>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">一个文本</label>
<div class="layui-input-block">
<input type="text" name="meta_test2" placeholder="" autocomplete="off" class="layui-input" value="'.$article->Metas->test2.'">
</div>
</div>
';
}
这个接口只适合一两个简单配置的项目,这些项目会和其它项目混在一起,如果有多个项目建议单独增加一个区域,可以用下面的接口
Add_Filter_Plugin('Filter_LayCenter_PushPost_Sidebar','function_name'); //挂载接口
function function_name($article){
echo '
<div class="layui-card">
<div class="layui-card-header">xxx主题配置</div>
<div class="layui-card-body">
<div class="layui-form-item">
<label class="layui-form-label">一个开关</label>
<div class="layui-input-block">
<input type="checkbox" name="meta_test1" lay-skin="switch" value="1" lay-text="ON|OFF" '.($article->Metas->test1 ? 'checked=""' : '').'>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">一个文本</label>
<div class="layui-input-block">
<input type="text" name="meta_test2" placeholder="" autocomplete="off" class="layui-input" value="'.$article->Metas->test2.'">
</div>
</div>
</div>
</div>
';
}
其它接口
Filter_LayCenter_PushPost_Footer 文章页最底部,可以直接echo出代码
Filter_LayCenter_PushPost_JS 直接输出js代码,不要有script标签,可以对ue编辑器添加一些按钮(可以参考“复制代码”插件)
文章相关数据
是否购买了本文章
//模板里用法
{$article.Purchased}已购买{else}未购买{/if}
//其它调用方法
if ($article->Purchased){
echo '已购买';
}else{
echo '未购买';
}
// $article 是文章对象,其它地方调用可以先用GetPost(文章ID)的方法获取对象
VIP会员是否能免费查看付费内容
//使用方法和上面的一样
$article->FreeView
获取文章的收藏数量
$article->CollectNums;
获取文章已售数量(已购买的人数)
$article->SellNums;
获取文章最近销售订单
$article->Orders(); //默认10个
foreach ($article->Orders(5) as $value){
echo '购买人ID:'.$value->UID;
echo '购买时间:'.date('Y-m-d',$value->Time);
}
获取最近收藏记录
$article->Collect(); //默认10个
//遍历方法同上
获取最近下载记录
$article->Download(); //默认10个
//遍历方法同上
获取文章附件下载次数
$article->DownloadNums;
用户中心添加页面/菜单
添加菜单
右边下拉菜单
Add_Filter_Plugin('Filter_LayCenter_Nav','function_name'); //挂载接口
function function_name(&$json){
$json['menu']['sidebar']['test'] = array ('title'=>'测试按钮','icon'=>'donate','href'=>'Admin/test');
$json['menu']['right']['userinfo']['children']['qqrobot'] = array('title'=>'<i class="fab fa-qq fa-fw"></i> QQ消息服务','href'=>'User/qqrobot/messagepush');
//数组中href值 是在在用户中心中打开的页面链接
}
//代码是添加了两个菜单,顶部两处的代码也可以添加,可参考用户中心插件class/json.php nav函数中的代码
添加页面
Add_Filter_Plugin('Filter_LayCenter_Page_End','function_name'); //挂载接口
function function_name($param){
global $zbp,$lcp;
if ($param[0] == 'User' && $param[1] == 'qqrobot' && $param[2] == 'messagepush'){
echo '页面内容';
}
}
传入的$param就是上面添加菜单用的href值,用户中心已经将它拆分为数组,用以上方法判断打开的是否是需要处理的页面。数组第一个值如果是Admin则只有管理员才可以访问,否则会被拦截
没有文化,只能用一个字形容:卧槽!!!
哇(撕心裂肺的那种)
牛(喊破音哪种)~~~