首页在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) { } } })获取到栏目信息,最好是存储到缓存,这样可以方便以后随时调用!
版权所有:转载请注明出处