Zblog按文章ID升序排列调用文章列表(实现倒序输出)
在一些特殊类型的网站,比如说小说网站的章节板块,或许会用到文章倒序输出这个功能,发布时间越早的前几章排在最前面,按照发布顺序依次排列。在Zblog中如何实现呢?只需要在调用文章列表时,按照文章ID升序排列即可实现,举个简单例子。
{php} $stime = time(); $ytime = 90*24*60*60; $ztime = $stime-$ytime; $order = array('log_ViewNums'=>'DESC'); $where = array(array('=','log_Status','0'),array('>','log_PostTime',$ztime)); $array = $zbp->GetArticleList(array('*'),$where,$order,array(8),''); {/php} {foreach $array as $cmslist} <li><a href="{$cmslist.Url}" title="{$cmslist.Title}">{$cmslist.Title}</a></li> {/foreach}
以上这段代码的含义是:调用90天内,被查看次数最多(热门)的8篇文章,我们只需要
将log_ViewNums换成log_ID,将DESC换成ASC,即可实现调用文章列表的倒序输出。
什么原理呢?或许您需要先了解一下下面的排序规则代码。
log_PostTime //按照发布时间 log_UpdateTime //按照更新时间 log_CommNums //按照评论数量 log_ViewNums //按照浏览数量 log_ID //按照ID log_CateID //按照分类ID log_AuthorID //按照作者ID
DESC的含义是降序,ASC的含义是升序。
若您不仅是想做单个模块的文章倒序输出,还想做文章列表的倒序输出,或许还会用到以下接口:
DefinePluginFilter('Filter_Plugin_LargeData_Article');
挂接方式为:
Add_Filter_Plugin('Filter_Plugin_LargeData_Article', 'LargeData_Article');
函数体参考:
//分类模板排序function LargeData_Article($select, $w, &$order, $limit, $option, $type){ global $zbp; switch($type){ case 'category': //分类模板标签,此段可删除 case 'tag': //标签模板标签,此段可删除 $pagebar = $option['pagebar']; $sort = GetVars('sort','GET') ? 'ASC' : 'DESC'; switch($o = GetVars('order','GET')){ case 'view': $order = array('log_ViewNums' => $sort); break; case 'comment': $order = array('log_CommNums' => $sort); break; case 'newest': default: $order = array('log_PostTime' => $sort); $sort == 'DESC' && $o = null; break; } if ($o){ $pagebar->UrlRule->__construct($zbp->option['ZC_CATEGORY_REGEX'] .($zbp->Config('system')->ZC_STATIC_MODE != 'REWRITE' ? '&' : '?'). 'order={%order%}&sort={%sort%}'); $pagebar->UrlRule->Rules['{%order%}'] = $o; $pagebar->UrlRule->Rules['{%sort%}'] = (int)GetVars('sort','GET'); } break; }}