ZblogPHP相关文章调用方法(ZblogPHP调用相关文章代码)
- 随笔
- 2021-11-11
- 1354
在zblogPHP主题模版中,大部分好一点的模板可以不用通过插件自我实现相关文章、热门文章、随机文章的功能。今天,在经历了N久无奈的测试后,我在BAndW模版中也实现了相关功能。因为部分在wiki里面不完善,所以自己收集整理了下分享给大家,希望大家喜欢。
相关文章调用:
{$aid=$article.ID} {$tagid=$article.Tags} {$cid=$article.Category.ID} {php} $str=""; $tagrd=array_rand($tagid); if( sizeof($tagid)>0 && ($tagid[$tagrd]->Count)>1){ $tagi='%{'.$tagrd.'}%'; $where = array(array('=','log_Status','0'),array('like','log_Tag',$tagi),array('<>','log_ID',$aid)); }else{ $where = array(array('=','log_Status','0'),array('=','log_CateID',$cid),array('<>','log_ID',$aid)); } $array = $zbp->GetArticleList(array('*'),$where,array('rand()'=>' '),array(10),''); foreach ($array as $related) { if(($related->ID)!=$aid){ $str .= "<li><a href=\"{$related->Url}\" title=\"{$related->Title}\">{$related->Title}</a></li>"; } } {/php} {$str}
这段代码在zblogPHP的Wiki中就有,一共是两种,第一种是这样的,第二种是通过getlist函数来实现的。相对而言,上面这种方案给优秀的,因为它考虑了多个tags的关联。不过wiki的代码中,没有str=''的前提判断,在运行时会出现错误,我们做模板的大部分都增加了,等待谁去更正Wiki吧。
在上面的代码中找到array(10),其中的数字“10”表示显示10篇相关文章,你可以通过改变10的数字,就可以指定相关文章的列表数目。
{foreach GetList(6,$article.Category.ID) as $related} {$related.Title} {/foreach}
以上这种方法主要是通过zblogphp自带的函数GetList来调用
主要是通过函数GetList(调用文章条数,$article.Category.ID)来实现的,其中调用文章条数,就是你要指定显示的相关文章数目。
热门文章调用:
{php} $stime = time(); $ytime = 91*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(10),''); {/php} {foreach $array as $hotpage} <li><a href="{$hotpage.Url}" title="{$hotpage.Title}">{$hotpage.Title}</a></li> {/foreach}
这是偷的蛋蛋的,虽然不知道是不是他原创,不过的确好用。其中的91是热门文章的天数,这个数字可以根据自己的需要设置,建议不要太大,占运行的。我测试时开始没注意,一直以为不好用呢。
随机文章调用:
function Nobird_Theme_Get_Rand(){ global $zbp,$str,$order; $str=''; $sql = $zbp->db->sql->Select( $zbp->table['Post'], array("MIN(log_ID)","MAX(log_ID)"), array( array('=', 'log_Type', '0'), array('=', 'log_Status', '0'), ), array('log_PostTime' => 'ASC'), null, null ); $array = $zbp->db->Query($sql); $i=mt_rand($array[0]["MIN(log_ID)"],$array[0]["MAX(log_ID)"]); $order = ''; $where = array( array('=','log_Status','0'), array('>','log_ID',$i) ); $array = $zbp->GetArticleList(array('*'),$where,$order,array(5),''); foreach ($array as $key=>$article) { if($key>5){ break; } $str .='<li><a href="'.$article->Url.'">'.$article->Title.'</a></li>'; } return $str; }
偷的鸟的,没有尝试过到底好不好用,有需要的朋友可以使用下。不过隐约的感觉太占内存了,所以主题中没有使用相关的调用。
本文由白琉璃于2021-11-11发表在白琉璃源码网,如有侵权或疑问,请联系我们,谢谢。
本文链接:http://www.bailiuli.com/t/234.html
发表评论