头像

模板常用的功能函数整理

技术分享发布:2021-10-28 10:03:36

部分小伙伴对rp的架构不是很熟悉,有点不适应rp的模板标签写法。为了方便小伙伴们制作模板,特意整理了一些模板制作过程中经常会用到的功能函数,放到common.php中即可。

不同功能需要use的文件也不同,请根据实际需求自行调整。


use引用部分(请将斜线改为反斜线

use rp\Cache;
use rp\Url;
use rp\Config;
use rp\Db;
use rp\index\LogsMod;



文章列表常用功能函数

/*
*最新文章
*@param $limit int 数量
*/
function newLogs($limit=10){
    $LogsMod=new LogsMod();
    $logData=$LogsMod->limit($limit)->order(['a.id'=>'desc'])->select();
    return $logData['list'];
}

/*
*置顶文章
*@param $limit int 数量
*/
function topLogs($limit=10){
    $LogsMod=new LogsMod();
    $logData=$LogsMod->limit($limit)->where(['a.isTop'=>1])->select();
    return $logData['list'];
}

/*
*热门文章
*@param $limit int 数量
*/
function hotLogs($limit=10){
    $LogsMod=new LogsMod();
    $logData=$LogsMod->limit($limit)->order(['a.views'=>'desc'])->select();
    return $logData['list'];
}

/*
*热评文章
*@param $limit int 数量
*/
function commentLogs($limit=10){
    $LogsMod=new LogsMod();
    $logData=$LogsMod->limit($limit)->order(['a.comnum'=>'desc'])->select();
    return $logData['list'];
}

/*
*点赞文章
*@param $limit int 数量
*/
function upLog($limit=10){
    $LogsMod=new LogsMod();
    $logData=$LogsMod->limit($limit)->order(['upnum'=>'desc'])->select();
    return $logData['list'];
}

/*
*随机文章
*@param $limit int 数量
*/
function randLog($limit=10){
    $LogsMod=new LogsMod();
    $dbConfig=Config::get('db');
    $obj=Db::instance()->query('SELECT IF((SELECT MAX(id) FROM '.$dbConfig['prefix'].'logs) >= '.$limit.', ROUND(RAND() * ((SELECT MAX(id) FROM '.$dbConfig['prefix'].'logs)-(SELECT MIN(id) FROM '.$dbConfig['prefix'].'logs)-'.$limit.'))  , 0) as startId');
    $id=$obj->result();
    $logData=$LogsMod->limit($limit)->where(['a.id'=>['>',$id['startId']]])->select();
    return $logData['list'];
}

/*
*相邻文章
*@param $logId int 文章ID
*/
function neighbor($logId){
    $LogsMod=new LogsMod();
    $res=$LogsMod->neighbor($logId);
    $prev='上一篇:没有了 ';
    $next='下一篇:没有了 ';
    if(!empty($res['prev'])){
        $prev='上一篇:'.$res['prev']['title'].'';
    }
    if(!empty($res['next'])){
        $next='下一篇:'.$res['next']['title'].'';
    }
    return $prev.$next;
}

/*
*相关文章
*@param $data array 内容页的文章数据
*@param $type string 相关类型,catr or tages
*@param $limit int 数量
*/
function related($data, $type='cate', $limit=10){
    $LogsMod=new LogsMod();
    $list=$LogsMod->related($data,$type,$limit);
    return $list;
}


分类/单页列表相关功能函数

/*
*获取指定栏目(分类)的文章
*@param $id int 分类ID
*@param $limit int 数量
*@param $order array 排序方式
*/
function getListByCate($id, $limit=10, $order=['a.upateTime'=>'desc','a.id'=>'desc']){
    if(empty($id)) return [];
    $LogsMod=new LogsMod();
    $ids=[$id];
    $category=Cache::read('category');
    if(!empty($category[$id]['children'])){
        $ids=array_merge($ids,$category[$id]['children']);
    }
    $logData=$LogsMod->cate($ids)->order($order)->limit($limit)->select();
    return $logData['list'];
}

/*
*获取指定单页内容
*@param $id int 单页ID
*@param $len int 内容长度,0获取全部
*/
function getPageContent($id, $len=0){
    $data=Db::name('pages')->where(['id'=>intval($id)])->field('content')->find();
    return !empty($data) ? ($len > 0 ? getContentByLength($data['content'],$len) : $data['content']) : '';
}

/*
*获取指定栏目的子栏目(html)
*@param $id int 分类ID
*/
function getChildByCate_html($id){
    $category=Cache::read('category');
    $cate=isset($category[$id]) ? $category[$id] : [];
    echo '全部';
    if(!empty($cate['children'])){
        foreach($cate['children'] as $k=>$v){
            $data=$category[$v];
            echo ''.$data['cate_name'].'';
        }
    }
}

/*
*获取指定栏目的子栏目(array)
*@param $id int 分类ID
*/
function getChildByCate_array($id){
    $category=Cache::read('category');
    if(isset($category[$id])){
        $cateArr=[];
        foreach($category[$id]['children'] as $k=>&$v){
            $cateArr[]=[
                'id'=>$v,
                'url'=>Url::cate($v),
                'cate_name'=>$category[$v]['cate_name'],
            ];
        }
        return $cateArr;
    }
    return [];
}

/*
*获取指定导航的子导航(array)
*@param $type string 导航类型,cate:分类,page:单页,diy:自定义
*@param $id int 导航ID
*/
function getChildByNav($type,$id){
    $nav=Cache::read('nav');
    $navId='';
    $subList=[];
    $typeId=['diy'=>1,'cate'=>2,'page'=>3];
    if(!isset($typeId[$type])) return $subList;
    foreach($nav as $k=>$v){
        if($typeId[$type] == $v['types'] && $id == $v['typeId']){
            $navId=$v['id'];break;
        }
        if(!empty($v['children'])){
            foreach($v['children'] as $sk=>$sv){
                if($typeId[$type] == $sv['types'] && $id == $sv['typeId']){
                    $navId=$sv['topId'];break 2;
                }
            }
        }
    }
    if(!empty($nav[$navId]['children'])){
        $subList=$nav[$navId]['children'];
    }
    return $subList;
}


URL相关功能函数

/*
*获取分类信息
*@param $id int 分类ID
*/
function getDataByCate($id){
    $category=Cache::read('category');
    if(isset($category[$id])){
        return $category[$id];
    }
    return [];
}

/*
*获取作者信息
*@param $id int 作者ID
*/
function getDataByAuthor($id){
    $user=Cache::read('user');
    return isset($user[$id]) ? $user[$id] :  [];
}

/*
*获取分类名称&Url(html)
*@param $id int 分类ID
*/
function getHtmlByCate($id){
    $category=Cache::read('category');
    if(isset($category[$id])){
        echo ''.$category[$id]['cate_name'].'';
    }else{
        echo '未知栏目';
    }
}

/*
*获取单页名称&Url(html)
*@param $id int 单页ID
*/
function getHtmlByPage($id){
    $pages=Cache::read('pages');
    if(isset($pages[$id])){
        echo ''.$pages[$id]['title'].'';
    }else{
        echo '未知单页';
    }
}

/*
*获取指定类型&ID链接URL
*@param $type string 类型
*@param $id int ID
*/
function getUrl($type,$id){
    return !empty($id) ? Url::other($type, $id) : '';
}

/*
*获取验证码
*@param $name string 验证码标识
*/
function getCodeUrl($name=''){
    return Url::other('captcha',$name);
}


媒体类相关函数

/*
*匹配正文图片(缩略图)(html)
*@param $data array 文章数据
*@param $len int 图片数量
*@param $isAuto boolean 无图时,是否使用随机图
*/
function thumb_html($data, $len=1, $isAuto=true){
    preg_match_all("|<img[^>]+src=\"([^>\"]+)\"?[^>]*>|is", $data['content'], $img);
    $thumb=[];
    if(isset($img[1]) && !empty($img[1])){
        $max=min(count($img[1]),$len);
        for($i=0; $i<$max; $i++){
            $imgs=$img[1][$i];
            $newimg=dirname($imgs). '/thum-' .basename($imgs);
            $thumb[]='<img src="'.(file_exists(CMSPATH .'/'. $newimg) ? $newimg : $imgs).'" alt="'.$data['title'].'"/>';
        }
    }elseif($isAuto){
        $thumb[]= '<img src="'. TEMPURL .'/images/random/'.rand(1,20).'.jpg" alt="'.$data['title'].'"/>';
    }
    return join('',$thumb);
}


加载中...
您需要登录后才可以评论,登录OR注册
还有0条精彩评论,点击继续查看
︿