我们现在要实现的是取出网站当前栏目名称和顶级分类名称,如下所示:
列表页的和单页的不能总是写死的吧??
我能就要想办法去让他变活的才可以解决问题噢,我们已经有了他的cate_id ,然后我们就可以通过cate_id去直接获取出单前栏目的内容,这是不用质疑的,
然后我们再通过cate_id去获取我们的cate_pid ,这样我们即可找到找到我们所需要的顶级分类啦,废话不多说,因为代码会在多个页面上用得到,
为了预防代码冗余,我们的解决方法是直接在Common前台中间层里面进行写:
<?php namespace HomeController; use ThinkController; 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); //头部二级分类的显示 结束 //列表页和产品页的面包屑导航 开始 $cateid = I('cate_id'); $mod = D('Category'); $res = $mod -> getparent($cateid); $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); }else{ //如果等于0,直接等于顶级栏目即可 $catetop = $cateone; $this -> assign('catetop',$catetop); } //顶级栏目的获取 结束 } }
然后我们再将他分配到模版里问题即可解决啦:
然后我们再来测试下我们的单页换个列表页 即可发现成展示出来了: