我们基于刚才在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,所以我们给一个判断他问题即可解决:
这样我们的问题即可解决了。。。。
时间: 2024-12-28 01:52:43