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