michaelzhouh 发表于 2011-12-22 10:50:48

Codeigniter 带搜索功能的分页

先说个题外话:老版本的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

huboo82 发表于 2011-12-22 15:17:46

本帖最后由 huboo82 于 2011-12-22 15:18 编辑

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

$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 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

收藏起来先,到这块了再过来看看

zero3412 发表于 2012-2-29 17:27:48

马克一下,学习了。

michaelzhouh 发表于 2012-3-2 08:43:42

不错,封装成一个单独的class,直接调用

666 发表于 2017-7-11 04:39:16

本帖最后由 666 于 2017-7-11 04:40 编辑

哈哈 分页参数直接加个 $config['reuse_query_string'] = TRUE;搞定
页: [1]
查看完整版本: Codeigniter 带搜索功能的分页