LayCenter简易适配文档

首先感谢您能适配本站开发的LayCenter(用户中心)插件,如果您是zblog的开发者,可以先购买本插件对主题进行适配。适配完成后,成功介绍1位用户购买本插件,您购买本插件的钱全额退还。

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(true);
//返回 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

Email

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>
    ';
}

其它插件或主题适配LayCenter说明  zblog zblog用户中心 适配LayCenter简易文档 LayCenter简易适配文档 第1张

文章正文插入内容按钮

Add_Filter_Plugin('Filter_LayCenter_PushPost_InserBtn','function_name');  //挂载接口

function function_name($article, &$insert){
    $insert[] = array('欢迎使用zblog','插入一些内容');
}

其它插件或主题适配LayCenter说明  zblog zblog用户中心 适配LayCenter简易文档 LayCenter简易适配文档 第2张

侧栏附加内容

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>
    ';
}

其它插件或主题适配LayCenter说明  zblog zblog用户中心 适配LayCenter简易文档 LayCenter简易适配文档 第3张

这个接口只适合一两个简单配置的项目,这些项目会和其它项目混在一起,如果有多个项目建议单独增加一个区域,可以用下面的接口

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>
    ';
}

其它插件或主题适配LayCenter说明  zblog zblog用户中心 适配LayCenter简易文档 LayCenter简易适配文档 第4张

其它接口

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函数中的代码

其它插件或主题适配LayCenter说明  zblog zblog用户中心 适配LayCenter简易文档 LayCenter简易适配文档 第5张其它插件或主题适配LayCenter说明  zblog zblog用户中心 适配LayCenter简易文档 LayCenter简易适配文档 第6张 

添加页面

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则只有管理员才可以访问,否则会被拦截

相关文章

评论:

2 条评论

发表评论 取消回复

很抱歉,您暂时无法发布评论。需要 登录 后才能发布。