当前栏目相关(当前位置、栏目列表、当前栏目数组等)

jerry thinkphp 2015年11月18日 收藏
获取当前栏目相关数组(
当前位置、
栏目列表、
当前栏目数组,
一级栏目数组



第一次提交代码,如果有什么问题欢迎指正。
//unset($data[$key]);
上面代码注视是因为在测试的时候,如果同级有多个分类,如果进行unset操作就会只显示一个分类 ,各位大神们可以试试。
效果:


1、调用函数
class VMSExtends{
/* category_tree()  
     * @param Array $cateArray[positionArr]        // 获取当前位置
     * @param Array $cateArray[position]    // 获取当前位置html代码
     * @param Array $cateArray[list]            // 该cate_id所在的树
     * @param Array $cateArray[start]           // 首位cate_id  
     * @param Array $cateArray[end]               // 末位cate_id
     * return $cateArray  
     */
    static public $pos_list = array();
    static public $cate_list = array();
    static public $cateArray = array();
    /* 获取当前位置数组 */ 
    function got_pos(&$data,$nowcid,$count=0){
        foreach ($data as $key => $value){
            if($value['id']==$nowcid){
                $value['count'] = $count;
                self::$pos_list[]=$value;
                //unset($data[$key]);
                self::got_pos($data,$value['pid'],$count+1);
            } 
        }
        return self::$pos_list;
    }
    /* 获取当前cate_id的一级栏目下的树 
     * 
     */
    function got_list(&$data,$nowid,$count=0){
        foreach ($data as $key => $value){
            if($value['pid']==$nowid){
                $value['counts'] = $count;
                self::$cate_list[]=$value;
                //unset($data[$key]);
                self::got_list($data,$value['id'],$count+1);
            } 
        }
        return self::$cate_list;
    }
    /* 获取当前cate_id相关数组 */
    function category_tree($data,$nowcid){
        /* 获取当前位置数组 */    
        $cateArray['positionArr'] = array_reverse(self::got_pos($data,$nowcid,0));
        foreach($cateArray['positionArr'] as $k=>$val){
            $cateArray['position'] .=' >> <a href="?a=index&m=content&cate_id='.$val[id].'">'.$val[name].'</a> ';
        }
        // 获取首位 cate_id 数组
        $cateArray['start'] = $cateArray['positionArr'][0];
        // 获取末位 cate_id 数组
        $cateArray['end'] = end($cateArray['positionArr']);
        /* 获取当前cate_id的一级栏目下的树 */
        $cateArray['list'] = self::got_list($data,$cateArray['start']['id'],0);
        return $cateArray;
    }
2、使用方法
我把(1)的代码的文件VMSExtends.php放在Extend/Vendor/VmsLib/下。
使用代码如下:
/* 获取当前位置 */
        $result =  M($cate_name)->field('id,templ,pid,name')->where("templ != 'url'")
                                ->order('sort_order ASC,id asc')->select();   // 应该是读取缓存数据的,为了测是方便就这样直接读数据库了
vendor('VmsLib.VMSExtends');
$cateArray = VMSExtends::category_tree($result,$cate_id);
$this->assign('cateArray',$cateArray);
3、当前位置
{$cateArray['position']}

4、栏目列表
<ul>
<volist name="cateArray['list']" id='val'>
<li style="text-indent:{$val['counts']*2}em;"><a href="{:u('content/index',array('cate_id'=>$val['id']))}" >{$val.name}</a> </li>
</volist>
</ul>