帝国cms之搜索功能的API接口代码示例

<?php
defined('ECMSAPI_MOD') or exit;

/*
* 为了安全 传用的参数我们必须经过严格的格式化处理
*/

$page = $api->param('page' , 1 , 'intval'); // 当前页码
$pagesize = $api->param('pagesize' , 10 , 'intval'); // 每页显示数据量
$classid = $api->param('classid' , 0 , 'intval'); // 指定栏目id
$keyword = $api->param('keyword' , 0 , 'strip_tags'); // 指定栏目id

$fun = $api->load('fun'); // 加载一个辅助函数类 方便后面的调用 不需要重复的拼写 $api->load('fun')

$page = $fun->toInt($page , 1); // 页码应该不小于1
$pagesize = $fun->toInt($pagesize , 1 , 100); // 每页显示数据量范围应该在1~100 若不加限制 当数据达到10W+级时,直接将pagesize设置为 10W 接口将直接崩溃

/*
* $class_r  是帝国官方自带的栏目缓存数组 我们通过它来获取栏目相关信息
*/

// 栏目id不为0的情况下 判断栏目是否存在 不存在 将栏目id设置为0
if($classid !== 0 && !isset($class_r[$classid])){
    $classid = 0;
}

// 定义查询条件 $map
$map = '1=1';

// 当栏目id不为0时 添加对应的筛选条件
if($classid !== 0){
    $classdata = $class_r[$classid]; // 获取栏目信息

    if($classdata['islast']){
        // 当栏目为终级栏目时
        $map .= ' and classid = '.$classid;
    }else{
        // 当栏目为非终级栏目时
        $sonclass = $classdata['sonclass']; //获取所包含的子栏目id
        $sonclass = $api->load('fun')->toNumArray($sonclass); // 将字符串转成数组
        $sonclass = implode(',' , $sonclass); // 将所包含的子栏目id转化成 1,2,3,5格式
        if($sonclass !== ''){
            $map .= ' and classid in('.$sonclass.')';
        }
    }
}

// 关键词搜索
if($keyword != ''){
    $map .= ' and title like "%'.$keyword.'%"';
}

// 获取当前条件下的总数据量
$total = $api->load('db')->total('[!db.pre!]ecms_movie' , $map);

// 获取总页数
$totalpage = $total > 0 ? ceil($total/$pagesize) : 1;

// 获取当前页的数据
$list = $total > 0 || $page > $totalpage ? $api->load('db')->select('[!db.pre!]ecms_movie' , '*' , $map , $pagesize.','.$page , 'id desc') : [];

foreach($list as $i=>$v){
    // 将时间戳转成 2020-12-11 17:15:10 格式
    $list[$i]['newstime'] = date('Y-m-d' , $v['newstime']);
}

// 输出json结构数据 前面我们定义了$fun 所以 $fun->json 同等于 $api->load('fun')->json
$fun->json(1 , [
    'total' => $total,
    'page' => $page,
    'pagesize' => $pagesize,
    'totalpage' => $totalpage,
    'classid' => $classid,
    'keyword' => $keyword,
    'list' => $list
]);

 

版权声明 1. 本网站名称:稻草人笔记   永久网址:https://www.facekun.com
2. 本文链接:帝国cms之搜索功能的API接口代码示例: https://www.facekun.com/arts/1084.html
3. 部分文章内容来源于网络,仅作为学习展示之用,版权归原作者所有
4. 因部分文章网络流转次数较多,已无法追溯至原作者,若遗漏导致侵犯了您的权益,请您来信告知我,确认后会尽快删除。
5. 本站禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6. 如无特别声明本文即为原创文章仅代表个人观点,版权归《稻草人笔记》所有,欢迎转载,转载请保留原文链接。
THE END
分享
二维码
< <上一篇
下一篇>>