获取当前栏目相关数组(
当前位置、
栏目列表、
当前栏目数组,
一级栏目数组
等
)
第一次提交代码,如果有什么问题欢迎指正。
//unset($data[$key]);
上面代码注视是因为在测试的时候,如果同级有多个分类,如果进行unset操作就会只显示一个分类 ,各位大神们可以试试。
效果:
1、调用函数 class VMSExtends{<br>
/* category_tree() <br>
* @param Array $cateArray[positionArr] // 获取当前位置<br>
* @param Array $cateArray[position] // 获取当前位置html代码<br>
* @param Array $cateArray[list] // 该cate_id所在的树<br>
* @param Array $cateArray[start] // 首位cate_id <br>
* @param Array $cateArray[end] // 末位cate_id<br>
* return $cateArray <br>
*/<br>
static public $pos_list = array();<br>
static public $cate_list = array();<br>
static public $cateArray = array();<br>
/* 获取当前位置数组 */ <br>
function got_pos(&$data,$nowcid,$count=0){<br>
foreach ($data as $key => $value){<br>
if($value['id']==$nowcid){<br>
$value['count'] = $count;<br>
self::$pos_list[]=$value;<br>
//unset($data[$key]);<br>
self::got_pos($data,$value['pid'],$count+1);<br>
} <br>
}<br>
return self::$pos_list;<br>
}<br>
/* 获取当前cate_id的一级栏目下的树 <br>
* <br>
*/<br>
function got_list(&$data,$nowid,$count=0){<br>
foreach ($data as $key => $value){<br>
if($value['pid']==$nowid){<br>
$value['counts'] = $count;<br>
self::$cate_list[]=$value;<br>
//unset($data[$key]);<br>
self::got_list($data,$value['id'],$count+1);<br>
} <br>
}<br>
return self::$cate_list;<br>
}<br>
/* 获取当前cate_id相关数组 */<br>
function category_tree($data,$nowcid){<br>
/* 获取当前位置数组 */ <br>
$cateArray['positionArr'] = array_reverse(self::got_pos($data,$nowcid,0));<br>
foreach($cateArray['positionArr'] as $k=>$val){<br>
$cateArray['position'] .=' >> <a>'.$val[name].'</a> ';<br>
}<br>
// 获取首位 cate_id 数组<br>
$cateArray['start'] = $cateArray['positionArr'][0];<br>
// 获取末位 cate_id 数组<br>
$cateArray['end'] = end($cateArray['positionArr']);<br>
/* 获取当前cate_id的一级栏目下的树 */<br>
$cateArray['list'] = self::got_list($data,$cateArray['start']['id'],0);<br>
return $cateArray;<br>
}<br>
}
2、使用方法
我把(1)的代码的文件VMSExtends.php放在Extend/Vendor/VmsLib/下。
使用代码如下:/* 获取当前位置 */<br>
$result = M($cate_name)->field('id,templ,pid,name')->where("templ != 'url'")<br>
->order('sort_order ASC,id asc')->select(); // 应该是读取缓存数据的,为了测是方便就这样直接读数据库了<br>
vendor('VmsLib.VMSExtends');<br>
$cateArray = VMSExtends::category_tree($result,$cate_id);<br>
$this->assign('cateArray',$cateArray);
3、当前位置
{$cateArray['position']}
4、栏目列表
AD:真正免费,域名+虚机+企业邮箱=0元