用户
 找回密码
 入住 CI 中国社区
搜索
查看: 9819|回复: 19
收起左侧

[库 Library] 仿 Django Paginator 扩展 CI 分页类

  [复制链接]
发表于 2011-12-24 15:08:25 | 显示全部楼层 |阅读模式
weblog 链接地址:仿 Django Paginator 扩展 CI 分页类
注意:以下内容在已测试的情况下仅适用于 Codeigniter 2.10 版本

一直觉得 Django 分页很方便视图的定制以及 GET 方式的检索,只把分页后的数据和分页相关的数据输出到模板,比如是否有上一页/下一页,页码范围,当前页等,所以在此以扩展 CI 分页类来实现类似功能,先看一副截图吧(觉得图片小可以在新标签里打开图片):

snapshot.png

使用方法(Controller):
PHP复制代码
 
// 载入分页类
$this->load->library('pagination');
$config['total_rows'] = $this->post->get_content_list('post', 'published', NULL, NULL);
$config['cur_page'] = $page;
$config['per_page'] = 10;
 
// 依据配置初始化分页类
$this->pagination->initialize($config);
$pagery = $this->pagination->create_links();
$offset = $this->pagination->offset;
$per_page = $this->pagination->per_page;
 
// 根据每页条数和位置取得分页后的内容
$posts = $this->post->get_content_list('post', 'published', $per_page, $offset);
 
$this->_data['posts'] = $posts;
$this->_data['pagery'] = $pagery;
 
$this->load->view('all_posts', $this->_data);
 
复制代码


使用方法(View):
PHP复制代码
 
<?php if($pagery): ?>
<div class="pagination">
        <ul>
                <?php if($pagery['has_previous']): ?>
                <li class="prev"><a href="<?php echo site_url('admin/posts/?page=' . ($pagery['page'] - 1) . '&status=' . $status . '&mid=' . $mid . '&q=' . $q); ?>">上一页</a></li>
                <?php else: ?>
                <li class="prev disabled"><a href="javascript:void(0)">上一页</a></li>
                <?php endif; ?>
                <?php foreach($pagery['page_range'] as $item):  ?>
                <?php if($pagery['page'] == $item): ?>
                <li class="active"><a><?php echo $item; ?></a></li>
                <?php elseif($item == '…'): ?>
                <li class="disabled"><a href="#"><?php echo $item; ?></a></li>
                <?php else: ?>
                <li><a href="<?php echo site_url('admin/posts/?page=' . $item . '&status=' . $status . '&mid=' . $mid . '&q=' . $q); ?>"><?php echo $item; ?></a></li>
                <?php endif; ?>
                <?php endforeach;  ?>
                <?php if($pagery['has_next']): ?>
                <li class="next"><a href="<?php echo site_url('admin/posts/?page=' . ($pagery['page'] + 1) . '&status=' . $status . '&mid=' . $mid . '&q=' . $q); ?>">下一页</a></li>
                <?php else: ?>
                <li class="next disabled"><a href="javascript:void(0)">下一页</a></li>
                <?php endif; ?>
        </ul>
</div>
<?php endif; ?>
 
复制代码


可以根据自己的需要在视图里定制分页呈现的样式,比如这样:
snapshot2.png
MY_Pagination.zip (1.26 KB, 下载次数: 355)

评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

发表于 2011-12-25 13:32:50 | 显示全部楼层
感谢楼主的分享啊!!!!!
发表于 2011-12-29 17:56:30 | 显示全部楼层
谢谢分享
发表于 2011-12-30 10:40:46 | 显示全部楼层
感谢楼主分享。
发表于 2012-3-7 23:33:24 | 显示全部楼层
感谢楼主的分享,太棒了,正需要这个!{:soso_e179:}{:soso_e181:}
发表于 2012-3-8 22:12:46 | 显示全部楼层
看不懂啊
发表于 2012-3-19 13:06:56 | 显示全部楼层
感谢楼主分享,另外。。。楼主这个管理界面很漂亮,不知是否方便分享或者给指条道儿?
 楼主| 发表于 2012-3-19 15:40:05 | 显示全部楼层
o熊小猫o 发表于 2012-3-19 13:06
感谢楼主分享,另外。。。楼主这个管理界面很漂亮,不知是否方便分享或者给指条道儿? ...

http://twitter.github.com/bootstrap/
发表于 2012-3-19 17:42:37 | 显示全部楼层
huboo82 发表于 2012-3-19 15:40
http://twitter.github.com/bootstrap/

感谢楼主指点
发表于 2012-3-29 21:59:52 | 显示全部楼层
少了全部页数啊.....   现在找各种论坛,各种样式。没有简单点的 包括全部页数的?

本版积分规则