本方法主用来调用某个分类的顶级分类,或者二级,三级,指定级别的分类如: 例一: 顶级分类二级分类三级分类四级分类五级分类六。
本方法主用来调用某个分类的顶级分类,或者二级,三级,指定级别的分类如:
例一: 顶级分类>二级分类>三级分类>四级分类>五级分类>六级分类
例二:顶级分类>二级分类>三级分类>四级分类>
以上两个例子中,一个分类树是六级,一个分类树是四级,下面客户有一个需求,不管是在 例一的六级分类下,还是例二的四级分类下的文章内容或者列表页,调用出本分类的上级分类中的二级分类。
(PS:当然也可能是调用顶级分类或者三级分类),有些分类树可能还更多级别,或者只有两级,也就是说不管在任何分类下的文章,我都只调用他的上级分类的第二级别的分类名称。
相信这个需求还是有不少会有的,下面说调用方法
首先在include/global.func.php 增加一个函数:
function spid($catid,$level) {
global $db;
$catid = intval($catid);
$row = $db->get_one("selec parentid,arrparentid,catid from {$db->pre}category wher catid=$catid", 'CACHE');
$arrparentids = $row['arrparentid'];
$arrparentid = explode(',', $arrparentids);
$pid = $arrparentid[$level];
$pid = isset($pid) ? intval($pid) : 0;
return $pid;
}
调用方法:
列表循环中:{spid($t[catid],3)}
内容页:{spid($catid,3)}
这里面的3指的调用二级分类,2调用的是顶级分类,4调用的是三级分类,以此类推,因为在DT的分类表中arrparentid字段的第一位无论是几分类都是0,所以我们调用上级分类时要往后推一位。