菜单的无限分类2分层原理

通过查询和order排序后, 再把数据分配到模板中,这个时候再回到模板页查看是不会有层级感的, 因为做的是菜单-子菜单这样的结构,所以为了区分,就要重新写一个功能, 因为子菜单的path是主菜单的path+id, 比如count(array(0,1))-1 说明这个就为主菜单下的一级子菜单项, 如果想要排序, 可以乘以一个偶数, (奇数没法取确定值),比如我是一级菜单,就为1*20=20,二级就为2*20-40,一种类型存一个索引。

$list[$key]['signnum'] = count(explode('-',$val['mpath']))-1;
$list[$key]['marignnum'] = (count(explode('-',$val['mpath']))-1)*20;

然后回到模板页, 首先取出option里的name值, 然后再option里进行for循环

for($i=0;$i<$vlist["marignnum"]/5;$i++)
  {
   echo "&nbsp;";
  }

程序的执行流程就是, 取出第一级数据, 分割成数组计算位数减一,如果当前为第一个走到第一个数组下标处就为1,走到第二个数组下标处就为20, 回到模板里, 在取出option前会进行一次判断, 这个判断就是为了缩进用的, 比如第一次为20, 那么20/5 = 4 $i=0, 自然输出4个缩进, 第二次为array(0,1,2)-1 * 20 = 40/5=8,自然输出8个空格, 以此达到缩进效果。

此条目发表在thinkphp分类目录,贴了, , 标签。将固定链接加入收藏夹。