收藏
评论
0浏览
1041部分小伙伴对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);
}