【声明】关于六久阁私自出售我公司dedecms小程序插件声明
发布时间:2018-09-03 09:54:42查看:0获取栏目category 
接口名称:获取栏目信息
接口标识:action=category
5.X接口调用:https://***/api.php?op=api&action=category
旧版接口调用:api:https://***/api.php?op=get_category[&catid=1][&parentid=1]
接口参数
字段名称 字段说明 类型 必填 备注
catid 栏目ID num 可不填 调用栏目以及子栏目信息
parentid 父栏目 num 可不填 根据父栏目调用;二者以catid为主
如果既不设置catid也不设置parentid,则表示调用全部网站栏目信息

小程序代码
  1. wx.request({ 
  2.       url: 'https://***/api.php?op=get_category'
  3.       data: { 
  4.         wxid: wxid //新版本是aid
  5.       }, 
  6.       method: 'GET'
  7.       header: { 
  8.         'content-type''application/json', // 默认值 
  9. 'x-appsecret': that.globalData.appsecret
  10.       }, 
  11.       success: function (res) { 
  12.         const categorys = res.data[0]; 
  13.         wx.setStorageSync('categorys', categorys) 
  14.       } 
  15.     }) 
返回数据:


展开每条数据,你可以看到该栏目的所有字段,你可以根据自己需要随意调用。
如果我想调用某个栏目的的,直接直接多传递一个参数catid:10即可,也可以直接指定父栏目catid,调用改父栏目的所有子栏目:
  1. wx.request({ 
  2.       url: 'https://***/api.php?op=get_category'
  3.       data: { 
  4.         wxid: wxid, 
  5.         parentid:9 
  6.       }, 
  7.       method: 'GET'
  8.       header: { 
  9.         'content-type''application/json', // 默认值 
  10.         'x-appsecret': that.globalData.appsecret
  11.       }, 
  12.       success: function (res) { 
  13.         const categorys = res.data[0]; 
  14.       } 
  15.     }) 

关于获取栏目的api你需要注意的

(1)由于栏目属于频繁调用,而又不经常更新的内容,所以小程序给栏目做了缓存,可以通过微信开发者工具控制台----storage-----里边的categorys查看你的所有栏目缓存。
在小程序页面的任意地方可以直接调用缓存:
  1. var CATEGORYS = wx.getStorageSync('categorys')//调用栏目缓存   
因为CATEGORYS是存储的数组形式,所以你直接可以通过数组方式调用任意栏目信息。
(2)为了方便栏目调用,api返回的数据已经做了以catid为主键的处理,也就是说你可以 :
  1. var CATEGORYS = wx.getStorageSync('categorys')//调用栏目缓存 
  2. vat catname = CATEGORYS[10]['catname']
调用某个栏目的子栏目,你可以:
  1. vat arrchildid = CATEGORYS[10]['arrchildid'] 

循环子栏目并且提取前n条效果的实现(已合并为toplist接口)

用于我的demo是采用tab切换的方式,即获取当前栏目的子栏目或者兄弟栏目,然后只展示当前页面下的栏目下的文章列表,有些人想做频道页,实现一个页面调用全部子栏目,并显示子栏目的前10篇文章,如图:



实现上面的样式,就需要对请求api进行封装了,根据不同的参数调用不同数据。
(1)下载request.js,放到你的项目utils文件夹下:
下载地址:request.js.rar
(2)在list.js中最上面引入一个request.js,放到util后边
  1. var request = require('../../utils/request.js'); 
(3)根据当前栏目,列取所有子栏目和子栏目的前n篇内容,并组装新数组,实现代码:(代码放到onload里边)
  1. var CATEGORYS = wx.getStorageSync('categorys')//调用栏目缓存
  2. var catid = options.catid ? options.catid : this.data.catid; 
  3. var catchild = CATEGORYS[catid]['arrchildid'].split(','); 
  4.     for(var m=0; m < catchild.length; m++){ 
  5.       if (cat != catchild[m]){ //第一项是顶级栏目catid,去掉,可以采取shift()直接去掉数组第一项
  6.         var rData = { 
  7.           catid: catchild[m], 
  8.           num:5, 
  9.           wxid: app.globalData.wxid 
  10.         } 
  11.          
  12.         let catida = catchild[m]; //存放临时catid
  13.         let catnamea = CATEGORYS[catchild[m]]['catname']; //存放临时catname
  14.         let listcatid = "listdata[" + catchild[m] + "].catid"
  15.         let listcatname = "listdata[" + catchild[m] + "].catname"
  16.         let listdatas = "listdata[" + catchild[m] +"].list"
  17.         request.getRequest(app.globalData.api.api_list, rData, function(res){ 
  18.           //请求成功之后获取到的数据 
  19.           that.setData({ 
  20.             [listcatid]: catida, 
  21.             [listcatname]: catnamea, 
  22.             [listdatas]: res 
  23.           }) 
  24.            
  25.         }, function(res){ 
  26.           console.log('请求失败'
  27.         }); 
  28.       } 
  29.     } 
这样我们通过打印listdata,就能看出所有的数据

(注意:listdata的键值并不是正常的1、2、3而是catid,并且list中我并没有对时间处理,你们别忘了处理)
(4)list.wxml代码实现
  1. <view class='list'
  2.     <block wx:for="{{listdata}}" wx:key="list2"
  3.     <view  wx:if="{{item.catid}}"
  4.       <view class="list_title2"
  5.         <view class="list_title2_more" data-catid="{{item.catid}}" bindtap=''>{{list2}}查看更多</view> 
  6.         {{item.catname}} 
  7.       </view> 
  8.       <view class="list_txt"
  9.         <block  wx:for="{{item.list}}" wx:for-item="list" wx:key="list"
  10.           <view class='list_txtli' data-id="{{list.id}}" data-catid="{{list.catid}}" bindtap='view_detail'
  11.             <view class='list_txt_tit'> {{list.title}}</view> 
  12.             <view class='list_txt_time'>{{list.inputtime}}</view> 
  13.           </view> 
  14.         </block> 
  15.       </view> 
  16.       </view> 
  17.     </block> 
  18.   </view> 
由于键值我是用的catid,所以需要做个if判断,防止空内容出现。
预览效果图:



更多问题,正在整理中....

版权声明:本文为原创文章,未经允许不得转载。https://doc.tengcee.com/phpcms/api/8.html
上一篇:API使用须知
下一篇:获取列表lists

服务热线

15137100750

我知道你不会打


但是我还是要写


你懂得!

微信二维码

QQ群二维码