你现在的位置:首页 > PHP网站建设知识库 > ZenCart > 正文

zencart展开所有分类目录

zencart默认的首页目录显示目录或者分类是只显示父级目录或者分类的链接,而子目录默认是不显示的,只有当点击进去之后才显示。最近发现很多有都有这样的需求,就是希望在首页显示所有的分类目录和子分类目录。所以就我今天也就特意去看了一下,最后也实现了这个效果,所以分析一下这个修改的方法。 

其实修改起来比较方便,首先我们找到文件

includes\classes\category_tree.php,这个就是分类目录的主要类文件。找到

if (zen_not_null($cPath)) {这个位置后,主要修改的地方就是在接下来的地方:具体实现如: 

 
    if (true or zen_not_null($cPath)) { 
      /////////////////展开所有目录///////////// 
      unset($cPath_array);///清除原来的内容,重新定义这个数组 
      $cPath_array=array(); 
      $all_categories_sql="SELECT distinct parent_id FROM ".TABLE_CATEGORIES." where parent_id>0";///查询要显示子目录的父级目录ID 
      $all=$db->Execute($all_categories_sql); 
      while (!$all->EOF) { 
          $cPath_array[]=$all->fields['parent_id'];//保存起来,下面需要这个数组的内容来说明要显示的子分类目录 
          $all->MoveNext(); 
      } 
    //////////////////////////////// 
 
大概的解释一下这个修改的意义所在。 

默认的显示子目录的主要参数就是$cPath,$cPath_array,这两个参数在首页的时候是没有值的。 

所以接下来的判断会用到$cPath这个,判断是否有这个参数,如果有说明当前页面不是首页,不是首页就可以显示子目录了。 

那我们就可以去掉这个判断条件,或者修改成上面的代码一样,这样是为了方便以后的修改,建议保留原来的部分。 

进去了之后就可以给$cPath_array这个参数赋值,因为首页是没有这个值的,所以是空,这样他就不会在首页显示子目录了。 

其实这个数组里面保存的就是父级目录的ID,知道了这个以后我们就可以直接查询目录表来获得这个ID了。获得这个ID后,下面就不需要我们修改任何地方了。 

不过建议还是安装一些目录显示的插件比较好,当目录和子目录比较多的时候页面布局就不好看了。这种只能在产品目录比较少的时候才可以使用。