在定制ZBLOG PHP模板的过程中,可能有需要用到调用随机文章和热门文章等解决方法,这里老蒋有看到@唐朝同学博客中有这样的脚本整理。我这边也转载过来,下次有使用的时候再测试实用性,如果有问题在进行更新。

使用方法:

第一、在我们的主题目录中需要创建include.php文件,如果有就直接添加脚本

> /**
> * 获取文章列表
> * @param int $count 数量
> * @param null $cate 分类ID
> * @param null $auth 用户ID
> * @param null $date 日期
> * @param null $tags 标签
> * @param null $search 搜索关键词
> * @param null $order 排序
> * @param null $option
> * @return array|mixed
> */
> function TcgetList($count = 10, $cate = null, $auth = null, $date = null, $tags = null, $search = null, $option = null,$order=null) {
> global $zbp;
> if (!is_array($option)) {
> $option = array();
> }
> if (!isset($option['only_ontop']))
> $option['only_ontop'] = false;
> if (!isset($option['only_not_ontop']))
> $option['only_not_ontop'] = false;
> if (!isset($option['has_subcate']))
> $option['has_subcate'] = false;
> if (!isset($option['is_related']))
> $option['is_related'] = false;
> if ($option['is_related']) {
> $at = $zbp->GetPostByID($option['is_related']);
> $tags = $at->Tags;
> if (!$tags)
> return array();
> $count = $count + 1;
> }
> if ($option['only_ontop'] == true) {
> $w[] = array('=', 'log_IsTop', 0);
> } elseif ($option['only_not_ontop'] == true) {
> $w[] = array('=', 'log_IsTop', 1);
> }
> $w = array();
> $w[] = array('=', 'log_Status', 0);
> $articles = array();
> if (!is_null($cate)) {
> $category = new Category;
> $category = $zbp->GetCategoryByID($cate);
> if ($category->ID > 0) {
> if (!$option['has_subcate']) {
> $w[] = array('=', 'log_CateID', $category->ID);
> } else {
> $arysubcate = array();
> $arysubcate[] = array('log_CateID', $category->ID);
> foreach ($zbp->categorys[$category->ID]->SubCategorys as $subcate) {
> $arysubcate[] = array('log_CateID', $subcate->ID);
> }
> $w[] = array('array', $arysubcate);
> }
> }
> }
> if (!is_null($auth)) {
> $author = new Member;
> $author = $zbp->GetMemberByID($auth);
> if ($author->ID > 0) {
> $w[] = array('=', 'log_AuthorID', $author->ID);
> }
> }
> if (!is_null($date)) {
> $datetime = strtotime($date);
> if ($datetime) {
> $datetitle = str_replace(array('%y%', '%m%'), array(date('Y', $datetime), date('n', $datetime)), $zbp->lang['msg']['year_month']);
> $w[] = array('BETWEEN', 'log_PostTime', $datetime, strtotime('+1 month', $datetime));
> }
> }
> if (!is_null($tags)) {
> $tag = new Tag;
> if (is_array($tags)) {
> $ta = array();
> foreach ($tags as $t) {
> $ta[] = array('log_Tag', '%{' . $t->ID . '}%');
> }
> $w[] = array('array_like', $ta);
> unset($ta);
> } else {
> if (is_int($tags)) {
> $tag = $zbp->GetTagByID($tags);
> } else {
> $tag = $zbp->GetTagByAliasOrName($tags);
> }
> if ($tag->ID > 0) {
> $w[] = array('LIKE', 'log_Tag', '%{' . $tag->ID . '}%');
> }
> }
> }
> if (is_string($search)) {
> $search=trim($search);
> if ($search!=='') {
> $w[] = array('search', 'log_Content', 'log_Intro', 'log_Title', $search);
> }
> }
> if(!empty($order)){
> if($order=='new'){
> $order = array('log_PostTime'=>'DESC');
> }
> if($order=='hot'){
> $order = array('log_ViewNums'=>'DESC');
> }
> if($order=='comm'){
> $order = array('log_CommNums'=>'DESC');
> }
> if($order=='rand'){
> $order = array('rand()'=>' ');
> }
> }
> $articles = $zbp->GetArticleList('*', $w, $order, $count, null, false);
> if ($option['is_related']) {
> foreach ($articles as $k => $a) {
> if ($a->ID == $option['is_related'])
> unset($articles[$k]);
> }
> if (count($articles) == $count){
> array_pop($articles);
> }
> }
> return $articles;
> }

然后就是在我们需要的界面模板中调用。

A - 随机文章

> {$array=TcgetList(10,null,null,null,null,null,null,'rand');}
> <ul id="related">
> {foreach $array as $related}
> <li><span class="time">{$related.Time('m-d')}</span><span class="title"><a href="{$related.Url}" title="{$related.Title}">{$related.Title}</a></span></li>
> {/foreach}
> </ul>

随机10篇文章

B - 热门文章

> {$array=TcgetList(10,null,null,null,null,null,null,'hot');}
> <ul id="related">
> {foreach $array as $related}
> <li><span class="time">{$related.Time('m-d')}</span><span class="title"><a href="{$related.Url}" title="{$related.Title}">{$related.Title}</a></span></li>
> {/foreach}
> </ul>

调用10篇热门文章

C - 热评文章

> {$array=TcgetList(10,null,null,null,null,null,null,'comm';}
> <ul id="related">
> {foreach $array as $related}
> <li><span class="time">{$related.Time('m-d')}</span><span class="title"><a href="{$related.Url}" title="{$related.Title}">{$related.Title}</a></span></li>
> {/foreach}
> </ul>

调用10篇热评文章。

具体的根据我们实际使用调用就可以。