当前位置:首页 > 随笔 > 正文

ZblogPHP相关文章调用方法(ZblogPHP调用相关文章代码)

在zblogPHP主题模版中,大部分好一点的模板可以不用通过插件自我实现相关文章、热门文章、随机文章的功能。今天,在经历了N久无奈的测试后,我在BAndW模版中也实现了相关功能。因为部分在wiki里面不完善,所以自己收集整理了下分享给大家,希望大家喜欢。

202106181623987764151859.png

相关文章调用:

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

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

发表评论