CI 2.0 无限级分类解决方案
本帖最后由 幽蓝冰魄 于 2011-7-18 13:41 编辑继续不说废话,直入主题,纯粹代码不解释。
MySQL 部分
DROP TABLE IF EXISTS `sort`;
CREATE TABLE `sort` (
`SortID` smallint(6) NOT NULL auto_increment,
`SortName` varchar(25) NOT NULL,
`ParentID` smallint(6) default '0',
`SortLevel` varchar(25) default NULL,
`SortOrder` smallint(6) default '0',
`IsShowID` tinyint(4) NOT NULL default '0',
PRIMARY KEY(`SortID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
Model 部分
// 获取文章分类
function get_sort() {
$this->db->select('SortID,SortName,ParentID,SortLevel');
$this->db->order_by('SortLevel');
$this->db->order_by('SortOrder', 'desc');
$this->db->where('IsShowID', 1);
return $data = $this->db->get('sort');
}
Controller 部分
// 加载文章分类
$data['sort'] = $this->M_sidebar->get_sort();
View 部分
<?php
$id = 1;
foreach ($sort->result() as $item){
$val = anchor('blog/sort/' . $item->SortID, $item->SortName);
if ($id > ($_id = count(explode('|', $item->SortLevel)))) {
echo str_repeat('</ul></li>', ($id - $_id)) . '<li class="cat-item">' . $val;
} else if ($id < $_id) {
echo '<ulclass="children"><li class="cat-item">' . $val;
} else if ($id === $_id) {
echo '</li><li class="cat-item">' . $val;
}
$id = $_id;
}
?>
css 部分
不提供
本例已经应用于 MeMo Blog (http://codeigniter.org.cn/forums/thread-9819-1-1.html) 中。
:lol好 你这个不用递归 好象不能无限分类啊? 黑鹰 发表于 2011-7-15 13:13 static/image/common/back.gif
你这个不用递归 好象不能无限分类啊?
确实没有使用递归,但是可以支持无限级别分类。具体可参照 MeMo Blog 的源码。 :D学习 值得学习.... 本帖最后由 dafa168 于 2012-7-23 16:23 编辑
$id = 1;
foreach ($sort->result() as $item){
$val = anchor('manage/news_list' . $item->SortID, $item->SortName);
if ($id > ($_id = count(explode('|', $item->SortLevel)))) {
echo str_repeat('</ul>', ($id - $_id)) . '<li class="cat-item">' . $val . '</li>';
} else if ($id < $_id) {
echo '<ulclass="children"><li class="cat-item">' . $val . '</li>';
} else if ($id === $_id) {
echo '<li class="cat-item">' . $val . '</li>'; //输出一级分类
}
$id = $_id;
}
感谢楼主分享,我正愁做这个呢 呵呵
不过,我试过了,视图部分这样输出 html代码是完整的
这个分类方法,应该叫做亲戚关系,很好用,推荐大家使用!
页:
[1]