我们基于刚才在model层的找顶级分类的代码在进行修改即可:
<?php namespace Home\Controller; use Think\Controller; class CommonController extends Controller {function __construct(){//继承父类的构造方法,所以网站在执行的时候会先执行他parent::__construct();//头部二级分类的显示 开始$mod = M("Category");$where['cate_pid'] = '0';//这样写可以达到一种防SQL注入的效果$cate = $mod -> where($where) -> select(); //获取顶级栏目为0的结果集$this -> assign('cate',$cate);//dump($cate);//头部二级分类的显示 结束if($cateid = I('cate_id')){ //加这个判断主要避免首页报错,因为首页不用接收任何信息//列表页和产品页的面包屑导航 开始$mod = D('Category');$res = $mod -> getparent($cateid);//dump($res);$this -> assign('res',$res);//列表页和产品页的面包屑导航 结束//获取当前栏目 开始$cateone = $mod -> where("cate_id=$cateid") -> find();$this -> assign('cateone',$cateone);//获取当前栏目 结束//顶级栏目的获取 开始if($cateone['cate_pid'] != '0'){//如果不等于0则需要从cate_pid找他的顶级栏目$pid = $cateone['cate_pid'];$catetop = $mod -> where("cate_id=$pid") -> find();$this -> assign('catetop',$catetop);//这里是左侧导航 开始$topid = $catetop['cate_id']; //取出顶级栏目的id$cateson = $mod -> where("cate_pid=$topid") -> select(); //相当于找儿子他爹$this -> assign('cateson',$cateson);//dump($cateson);//这里是左侧导航 结束}else{//如果等于0,直接等于顶级栏目即可$catetop = $cateone;$this -> assign('catetop',$catetop);//顶级栏目找子级栏目 开始$topid = $catetop['cate_id']; //取出顶级栏目的id$cateson = $mod -> where("cate_pid=$topid") -> select(); //相当于找儿子他爹$this -> assign('cateson',$cateson);//顶级栏目找子级栏目 结束 }}} }
然后分配到lists.html和page.html模版上即可:
测试下:
已经可以成功调用了,,,YES,但是发现一个问题,我们的首页不能用了,
那么我们commonController.class.php首页也是继承了这,但是首页没有cate_id,所以我们给一个判断他问题即可解决:
这样我们的问题即可解决了。。。。