ZblogPHP相关文章,热门文章,随机文章的代码

在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吧。

热门文章调用:

{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;
}

偷的鸟的,没有尝试过到底好不好用,有需要的朋友可以使用下。不过隐约的感觉太占内存了,所以主题中没有使用相关的调用。

最近文章调用:

请参考zblogPHP辅助函数:GetList 函数。学会这个,能解决不少问题呢。