php smarty 二级分类代码和模版循环例子

  二级分类的数据表结构如下:

php smarty 二级分类代码和模版循环例子

  PHP代码如下

  

复制代码 代码如下:

  /**

  @ 文章分类 含二级分类

  @ param int $rootnum -- 一级分类数量

  @ param int $childnum -- 二级分类数量

  @ 返回值 array

  @ date 2011.2.24

  */

  function temp_articletreecate($rootnum,$childnum){

  if(!isnumber($rootnum)){

  $rootnum = 10;

  }

  if(!isnumber($childnum)){

  $childnum = 10;

  }

  $category = array();

  $parent_sql = "SELECT cateid,catename FROM ".TABLE_PREFIX."articlecate WHERE parentid=0 AND depth=0 AND flag=1 ORDER BY orders ASC";

  if(intval($rootnum)>0){

  $parent_sql.=" LIMIT $rootnum";

  }

  $parent_cate = $GLOBALS['db']->getall($parent_sql);

  foreach($parent_cate as $parent_key => $parent_value){

  //子类数组名为 childcategory 根据情况自定义名称

  $category[] = array('cateid'=>$parent_value['cateid'],'catename'=>$parent_value['catename'],'childcategory'=>array());

  //读取子类

  $child_sql = "SELECT cateid,catename FROM ".TABLE_PREFIX."articlecate WHERE parentid=".$parent_value['cateid']." AND flag=1 ORDER BY orders ASC";

  if(intval($childnum)>0){

  $child_sql.=" LIMIT $childnum";

  }

  $child_cate = $GLOBALS['db']->getall($child_sql);

  foreach($child_cate as $child_key => $child_value){

  $category[count($category)-1]['childcategory'][] = array('cateid'=>$child_value['cateid'],'catename'=>$child_value['catename']);

  }

  }

  return $category;

  }

  PHP页面调用分类,如index.php

  

复制代码 代码如下:

  $goodscatetree = array();

  $goodscatetree = temp_goodstreecate(4,0); //调用分类函数(含二级分类)4--表示一级分类只显示4个,0--表示二级分类不限数量

  $tpl>assign("goodscatetree",$goodscatetree); //执行smarty引擎

  $tpl->display->(index.tpl); //输出smarty模版页面

  TPL模版页面输出分类,如index.tpl页面

  

复制代码 代码如下:

  {section name=p loop=$goodscatetree}

  一级分类:{$goodscatetree[p].catename}

  {section name=c loop=$goodscatetree[p].childcategory}

  二级分类:{$goodscatetree[p].childcategory[c].catename}

  {/section}

  {/section}