本例中,只加入能实现效果的内容,其他额外内容视情况添加。
1.首先,创建栏目表(column)
1 2 3 4 5 6 7 8 9 10 | CREATE TABLE ` column ` ( `id` int UNSIGNED NOT NULL AUTO_INCREMENT , `cname` varchar (30) NULL , `pid` int NULL DEFAULT 0 , PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARACTER SET =utf8 COLLATE =utf8_general_ci CHECKSUM=0 DELAY_KEY_WRITE=0; |
插入几条测试数据
这个很容易理解,就是pid等于id的即为其子栏目。这个就不用说了吧~
2.在控制器中将所有栏目查询出来
$result=M(‘column‘)->select();
3.重要的一步,就是利用递归将其下的子栏目,以数组形式压入。我们用如下函数实现
我们只要将第二步查出的数据运用这个函数,就会显示为下面这样的格式
$list=column_merge($result);
dump($list);
因为前台也会涉及这个函数,所以我们将这个函数写在function.php文件中,然后将文件放在应用目录下(默认Application)的Common/common文件夹中,这样前台和后台就
可以调用此函数了
4.在模板显示
先在控制器将数组分配过去
$result=M(‘column‘)->select();
$this->list=column_merge($result);
然后在模样中输出
1 2 3 4 5 6 | < volist name = ‘list‘ id = ‘top‘ > < h2 >{$top.cname}</ h2 > < volist name = ‘top.son‘ id = ‘son‘ > < h4 >{$son.cname}</ h4 > </ volist > </ volist > |
至此,我们的基本效果就实现了。其他效果自行添加
张盖盖博客 http://www.zhanggaigai.com/b/1.html
ThinkPHP运用递归实现无限级栏目分类,布布扣,bubuko.com
原文地址:http://zhanggaigai.blog.51cto.com/9224950/1533557