最近,在制作Z-Blog单本小说主题的时候,需要用到上下章调用,Z-Blog默认的上下文调用是按照全站进行的,而小说站需要调用同栏目的上下文,因此自己研究着写了一段代码。

实现原理,上一篇文章获取方法:查询当前ID小的数据并Desc降序排列,第一个就是上一篇;下一篇文章获取方法:查询比当前ID大的数据并Asc升序排列,第一个就是下一篇;如果没有上一篇或者下一篇就设置返回目录。

function heie_Getprenext($aid,$CategoryID,$type){
	global $zbp;
	$where=array();
	array_push($where,array('=','log_Status','0'));
	if($type == 'pre'){
    $order = array('log_ID'=>'DESC'); 	
	array_push($where,array('<','log_ID',$aid));
	}else{
    $order = array('log_ID'=>'ASC'); 	
	array_push($where,array('>','log_ID',$aid));		
	}
	$article_arr=$zbp->GetArticleList(array('*'),$where,$order,array('1'),'');
	if(empty($article_arr)){
	$articles ='<a href="'.$zbp->categorys[$CategoryID]->Url.'">返回目录</a>';		
	}else{
		foreach($article_arr as $article){
		$articles = '<a href="'.$article->Url.'">'.$article->Title.'</a>';	
		}
		if($type == 'pre'){
			$articles = '上一章:'.$articles;
		}else{
			$articles = '下一章:'.$articles;
		}
	}
	
	return $articles;   	
}

发现有一个BUG,忘了添加WHERE条件来控制调用同分类上下文,以下为最新代码:

function heie_Getprenext($aid,$CategoryID,$type){
	global $zbp;
	$where=array();
	array_push($where,array('=','log_Status','0'));
	array_push($where,array('=','log_CateID',$CategoryID));
	if($type == 'pre'){
    $order = array('log_ID'=>'DESC'); 	
	array_push($where,array('<','log_ID',$aid));
	}else{
    $order = array('log_ID'=>'ASC'); 	
	array_push($where,array('>','log_ID',$aid));		
	}
	$article_arr=$zbp->GetArticleList(array('*'),$where,$order,array('1'),'');
	if(empty($article_arr)){
	$articles ='<a href="'.$zbp->categorys[$CategoryID]->Url.'">返回目录</a>';		
	}else{
		foreach($article_arr as $article){
		$articles = '<a href="'.$article->Url.'">'.$article->Title.'</a>';	
		}
		if($type == 'pre'){
			$articles = '上一章:'.$articles;
		}else{
			$articles = '下一章:'.$articles;
		}
	}
	
	return $articles;   	
}


相关内容

回顶部