收藏本站 Archiver
    请 后使用快捷导航
    没有账号?入住 CI 中国社区
    查看: 6829|回复: 5

    [中级] Codeigniter 带搜索功能的分页

    [复制链接]
    楼主
    发表于 2011年12月22日 10:50:48 | 只看该作者 回帖奖励 |倒序浏览 |
    先说个题外话:老版本的ci只能用offset分页,ci2.1已经带了页码分页了,很好用。
    对应的参数是:
    var $use_page_numbers = FALSE; // Use page number for segment instead of offset
    这里只要传TRUE就能用页码分页了。

    但是我想请教一下,默认的分页都OK,加入要带上其他参数呢?比如搜索结果页面加分页不需要考虑SEO优化,其实用最古老的方式都行?请问你们是怎么弄的。
    我现在的是类似/search.php?q=搜索的词&page=1
    沙发
    发表于 2011年12月22日 15:17:46 | 只看该作者
    本帖最后由 huboo82 于 2011年12月22日 15:18 编辑

    参考django的paginator,用php可以输出一个包含分页页码数据的数组,然后在view里自由组织。比如:
    PHP复制代码

    $paginator = array (
    'has_next' => FALSE,
    'has_previous' => FALSE,
    'page_num' => FALSE,
    'page' => FALSE,
    'page_range' => array ()
    );
    复制代码

    has_next和has_previous是判断是否有下一页和上一页,page_num是总页数,page是当前页,page_range是个数组,显示页码范围比如一个3页array(1,2,3)。然后在视图里可以随意写分页了。

    例如这样的:
    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); ?>"><?php echo lang('previous'); ?></a></li>
    <?php else: ?>
    <li class="prev disabled"><a href="javascript:void(0)"><?php echo lang('previous'); ?></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 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); ?>"><?php echo lang('next'); ?></a></li>
    <?php else: ?>
    <li class="next disabled"><a href="javascript:void(0)"><?php echo lang('next'); ?></a></li>
    <?php endif; ?>
    </ul>
    </div>
    <?php endif; ?>
    复制代码
    藤椅
    发表于 2011年12月28日 15:40:20 | 只看该作者
    收藏起来先,到这块了再过来看看
    板凳
    发表于 2012年2月29日 17:27:48 | 只看该作者
    马克一下,学习了。
    报纸
    楼主| 发表于 2012年3月2日 08:43:42 | 只看该作者
    不错,封装成一个单独的class,直接调用
    地板
    发表于 2017年7月11日 04:39:16 | 只看该作者
    本帖最后由 666 于 2017年7月11日 04:40 编辑

    哈哈 分页参数直接加个 $config['reuse_query_string'] = TRUE; 搞定
    返回列表
    您需要登录后才可以回帖 登录 | 入住 CI 中国社区

    本版积分规则

    AltStyle によって変換されたページ (->オリジナル) /