幽蓝冰魄 发表于 2011-6-27 12:05:43

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) 中。


dllhb 发表于 2011-6-29 08:10:28

:lol好

黑鹰 发表于 2011-7-15 13:13:45

你这个不用递归 好象不能无限分类啊?

幽蓝冰魄 发表于 2011-7-18 08:53:42

黑鹰 发表于 2011-7-15 13:13 static/image/common/back.gif
你这个不用递归 好象不能无限分类啊?

确实没有使用递归,但是可以支持无限级别分类。具体可参照 MeMo Blog 的源码。

a68460266 发表于 2011-7-18 13:30:24

:D学习

sswowo 发表于 2011-9-18 17:08:09

值得学习....

dafa168 发表于 2012-7-23 16:12:56

本帖最后由 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]
查看完整版本: CI 2.0 无限级分类解决方案