无限分类及结合smarty输出的问题
发布于:2022-01-17 09:50:54
#1 prince
dump出的分类结果集如下:
[arr] => Smarty_Variable Object
(
[value] => Array
(
[0] => Array
(
[id] => 1
[p_id] => 0
[classname] => 产品
[child] => Array
(
[0] => Array
(
[id] => 3
[p_id] => 1
[classname] => 打印机
[child] => Array
(
[0] => Array
(
[id] => 13
[p_id] => 3
[classname] => 针式
)
[1] => Array
(
[id] => 14
[p_id] => 3
[classname] => 激光
)
[2] => Array
(
[id] => 15
[p_id] => 3
[classname] => 喷墨
)
)
)
)
)
[1] => Array
(
[id] => 2
[p_id] => 0
[classname] => 服务
[child] => Array
(
[0] => Array
(
[id] => 4
[p_id] => 2
[classname] => 硬件服务
[child] => Array
(
[0] => Array
(
[id] => 7
[p_id] => 4
[classname] => 电脑硬件
[child] => Array
(
[0] => Array
(
[id] => 9
[p_id] => 7
[classname] => 硬件类
)
)
)
)
)
[1] => Array
(
[id] => 5
[p_id] => 2
[classname] => 软件服务
)
)
)
[2] => Array
(
[id] => 16
[p_id] => 0
[classname] => 新闻
[child] => Array
(
[0] => Array
(
[id] => 18
[p_id] => 16
[classname] => 行业新闻
)
)
)
)
[nocache] =>
[scope] => 0
)
)
如何在smarty模板中输出显示成这种效果:
2011-06-03 22:42:45
#2 prince
用section和foreach反复调试试了几天都得不到正确的结果
2011-06-03 22:52:18
#3 jake
这种无限分类,要显示成那种“平板”的方式,要有两个前提条件:
1. 在数据中加入当前是第几层次的字段,在数据表内或计算出来,这样就可以显示成:一级没有,二级加一个“-”,三级加两个“--”
2. 在smarty内做的递归的函数,递归地把当前多级分类的数组,递归回只有一级数组来显示。
补充一下,经常看到的JS树型结构或多级菜单结构,虽然输入的数据可以是多级的。但是在JS中也同样进行了上面的计算和处理,最终才会显示。所以,无限多级分类的优点不在于“直接显示”,而是在于“分类显示”
2011-06-04 06:56:03
#4 prince
回复 3 jake 思路的确是这样的。
1. 在数据中加入当前是第几层次的字段,在数据表内或计算出来,这样就可以显示成:一级没有,二级加一个“-”,三级加两个“--”
2011-06-04 12:16:52
#5 feng157aaa
用数组循环来弄吧,老大的方法已经很好了
2011-06-07 15:55:02
#6 prince
如何计算数组中的键名是第几层次的?弄了几天没弄出来,最好是在模板中用smarty处理
2011-06-08 11:44:07
#7 jake
只能一项一项地计算自己的级别(递归计算)。很繁琐,对吧。
这就是为什么无限分类要用到左右值或者ID路径等等方式的原因。
目前你的问题,如果按一般的无限分类思路是只有一个父ID,那样不足够。你最好加上“当前层次”的字段。
用ID路径会更容易,也就是加上“ID路径”的字段,这样直接计算ID路径本身就可以知道是几级的内容。
2011-06-08 12:40:20
#8 gnipt
我也是遇到这个问题啊 不知楼主解决了没啊? 现在 只能 手工 嵌套 几层用啊。 没办法 实现无限嵌套!
2011-08-06 08:46:57
#9 kenzone
jake 能说说具体 ID路径 的内容是什么么?
2011-08-12 09:09:50
#11 kenzone
回复 10 jake 受教了~~ 感谢 Jake ~
2011-08-12 12:24:09