首页在phpcms v9的api文件夹下创建get_categorys.php,访问路径是:***/api.php?op=get_category
php代码:
/**
** 栏目调用接口,栏目相关信息
** catid 栏目id ,catid为空调用全部栏目
** parentid 父栏目id 为0是调用一级栏目 为-1时调用全部栏目
** catid和parentid 不能同时存在
** 如果存在catid则调用当前栏目信息,否则调用全部栏目信息
** 版权:石头建站 http://www.sootou.com ** 时间:2017-12-18
*/
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_app_func('util','content');
$siteid = 1;
$r = array();
$wxid = trim($_GET['wxid']) ? trim($_GET['wxid']) : '';
$catid = intval($_GET['catid']); //用来接收请求的栏目id
$parentid = trim($_GET['parentid']) ? intval($_GET['parentid']) : -1; //父栏目
$CATEGORYS = getcache('category_content_'.$siteid,'commons');
$category_db = pc_base::load_model('category_model');
/*正式逻辑*/
if($wxid == "" || empty($wxid)){
echo "微信id填写错误,请修改app.json配置";
}else{
$xiao_db = pc_base::load_model('xiaochengxu_model');
$xiao = $xiao_db->get_one(array('wxid'=>$wxid, 'status'=>"1"));
if($xiao){
/*-----------读取开始------------------*/
if(isset($catid) && $catid !=''){
$r = $category_db->get_one(array('catid' => $catid));
$childid = $r['arrchildid'];
$arrchildid = explode(',',$childid);
$childs = array();
foreach($arrchildid as $arr){
if($arr != $catid){
$childs[] = $arr;
}
}
//$r['arrchildid'] = implode(',',$childs);
$r['arrchildid'] = $childs;
}else{
if($parentid == '-1' ){
$r = $CATEGORYS;
}else{
$r = $category_db->select(array('parentid' => $parentid),'*','','lisrotder desc');
}
}
//转换为json类型 $r = json_encode($r); //格式:{{..},{..},{..}}
$r = json_encode(array_reverse(array_reverse($r))); //两次倒置数组,转成json数组,否则会出现无法排序的情况,格式[{..},{..},{..}]
//jsonp请求的固定写法,可以解决跨域问题,引入callback回调函数
echo $_GET['jsoncallback'] .$r;
/*-------------读取结束-----------------------*/
}else{
echo "您的小程序不存在或者已关闭" ;
}
}
通过这个接口,微信小程序就能直接访问调用网站的所有栏目信息,也可以指定调用某个栏目或者子栏目的信息,小程序代码:
wx.request({
url: 'https://www.cnzhixiao.wang/api.php?op=get_category',
data: {
wxid:wxid//必填,用于验证小程序合法性
},
method: 'GET',
header: {
'content-type': 'application/json' // 默认值
},
success: function (res) {
const categorys = res.data;
try {
categorys.unshift(Date.now());//为了后期方便调用
wx.setStorageSync('categorys', categorys)
} catch (e) {
}
}
})
获取到栏目信息,最好是存储到缓存,这样可以方便以后随时调用!
版权所有:转载请注明出处