zblog调用某个指定分类的文章教程
温馨提示:这篇文章已超过1685天没有更新,请注意相关的内容是否还可用!
最近在完善最新的锦鲤主题,然鹅在测试微语功能时候还是出现了偏差,所以在这里简单的啰嗦几句,或许有大神看完此篇文能给予我更多的帮助也说不定哈。。。
之前的微语已经完成了,首先去判断一个分类,如果是的话则显示微语,如果不是则正常显示列表,但是发布主题之后,大家觉得这种方式并不完美,因为当有新文章发布的时候微语就不会显示在首位,那么看上去并不符合大众审美(一部分人的大众),所以我又重新写代码(不一定都是自己写的,也有百度搜来的)。
首先还是判断微语是的话显示且只显示最新的一篇,其余的不显示在首页,而且可以固定首位,然后在分类的列表排除微语分类的文章,这么以来还算可以啊,但是又出现一个问题,比如:首页调用最新的12篇文章,其中6篇都是最新发布的,因为代码只显示最新的一篇(也就是6=1)那么其他文章就只能显示4篇,所有输出之后即使设置的是12篇,但其实真正显示的却只有4篇而已(逻辑有点乱,MD,别急慢慢缕缕,内心独白:我能怎么办,我也很绝望的好不)。
既然还是存在问题就得继续修改,终于看见天兴发布的教程“调用置顶分类的文章”需要加逻辑判断(这次还算是完美),首先判断是否开启微语功能,如果开启则显示微语分类,然后在显示除了微语之外的分类文章,举个例子:微语列表的分类ID是“10”那么在显示指定分类文章的时候,不获取ID为“10”的文章就可以了,这样一来,首位是微语且首页调用文章的数量也是对的。
附上天兴大神的代码(据说是自鸟儿写的,为什么是据说?因为天兴自己说的。。。emmmmmm)
复制以下代码粘贴到你在使用的主题中的“include.php”里面(别问我位置,只要不是第一行和最后一行一般都是可以的):
function 主题ID_GetArticleCategorys($Rows,$CategoryID,$hassubcate){ global $zbp; $ids = strpos($CategoryID,',') !== false ? explode(',',$CategoryID) : array($CategoryID); $wherearray=array(); foreach ($ids as $cateid){ if (!$hassubcate) { $wherearray[]=array('log_CateID',$cateid); }else{ $wherearray[] = array('log_CateID', $cateid); foreach ($zbp->categorys[$cateid]->SubCategorys as $subcate) { $wherearray[] = array('log_CateID', $subcate->ID); } } } $where=array( array('array',$wherearray), array('=','log_Status','0'), ); $order = array('log_PostTime'=>'DESC'); $articles= $zbp->GetArticleList(array('*'),$where,$order,array($Rows),''); return $articles; }
前台调用方法:
{foreach $array=主题ID_GetArticleCategorys(10,'1,2,3',true) as $related} <li><a href="{$related.Url}" target="_blank">{$related.Title}</a></li> {/foreach}
依次解释下“ 10“,”1,2,3”代表的是什么(为什么不解释“include.php”这段代码?因为,我也看不懂,所以解释不了。)10就是调用的文章数量,对嘛,1,2,3(数字之间用英文状态下的逗号,隔开)自然就是调用的分类嘛,小伙子你很聪明哈。整体的意思就是:调用分类为:1,2,3下的10篇文章。哦对了,你还别说,还真得介绍一些“include.php”里的某段代码(你可能会说,你刚才不是说你不会么,那现在怎么又会了呢?对,我是不会,但是天兴作者会呀,他怎么说我就怎么说呗,没毛病~~~)“array('log_PostTime'=>'DESC');”大概是第19行,
log_PostTime=按照时间排序; log_CommNums=按照评论数量排序; log_ViewNums=按照浏览数量排序;
最后按照需要自己DIY吧,好嘞,问题终于解决了,而且是完美的解决,接下来我就把微语用分类ID显示的功能取消了,,,你没看错,是取消了,不是修改了,为什么?因为太复杂,我用最简洁的方式取缔了它,你想知道是什么么?哈哈,赶快去更新主题来自己体验吧。
发表评论