带限制显示页码(或读取条数)的分页方法!

#1 小双

controller里面的代码:
 
$this->results = spClass("lib_review")->spPager($this->spArgs("page",1),8)->findAll(array('sta'=>1,'tid'=>1),"ctime DESC","id,title,ctime,contents,sta,grade");
  // 这里的分页
  $this->pager = spClass("lib_review")->spPager()->getPager();
模板里面的代码:
 
<{if $pager}>
     共有留言<{$pager.total_count}>条,共有<{$pager.total_page}>页(每页<{$pager.page_size}>条留言):
      
      <{if $pager.current_page != $pager.first_page}>
       前页 |
       上一页 |
      <{/if}>
     
     <{foreach from=$pager.all_pages item=thepage}>
      <{if $thepage != $pager.current_page}>
      
                            <{$thepage}>
                           

      <{else}>
       <{$thepage}>
      <{/if}>
     <{/foreach}>
      
      <{if $pager.current_page != $pager.last_page}>
       |
       下一页 |
       后页
      <{/if}>
     <{/if}>
页面预览效果:
未命名.jpg

我想做到是只显示前100条,页码显示效果是
==============================================================
共有留言100条,共有10页(每页8条留言):  前页 | 上一页 | 1 2 3 4 5 6 7 8 9 10 | 下一页 | 后页
==============================================================

难道所谓的“显示”,就是用css隐藏多余的分页页码吗?
或者在controller里面写,具体点,老大,我笨行啵!我也很纠结啊!直接改spModel里面的total_count = 100也可以,但不至于要改这个文件吧!

2010-07-12 10:45:36

#2 小双

唉,冷静以后才发现原来我可以搞定。:L

<{if $pager}>
     显示 1 ~ <{if $pager.total_count >= 240 }>240<{/if}> 条评论
      
      <{if $pager.current_page != $pager.first_page}>
       前页 |
       上一页 |
      <{/if}>
     
     <{foreach from=$pager.all_pages item=thepage}>
                     <{if $thepage <= 30}>  
      <{if $thepage != $pager.current_page}>
       <{$thepage}>
      <{else}>
       <{$thepage}>
      <{/if}>
      <{/if}>
     <{/foreach}>
      
       <{if $pager.last_page >=30}>
                         <{if $pager.current_page != 30}>
       |
       下一页 |
       后页
       <{/if}>
                        <{else if $pager.last_page < 30}>
                            <{if $pager.current_page != $pager.last_page}>
       |
       下一页 |
       后页
                            <{/if}>
                        <{/if}>
     <{/if}>
很简单的事情,改模板里面条件判断!

2010-07-12 11:30:21

#3 jake

:victory:冷静是亮点:lol

2010-07-12 12:38:39

#4 billgame

刚需要搞这个部分,mark之。感谢楼主和jake.
为何这个论坛没有找到收藏功能?那个很方便啊。

2010-10-06 16:11:44

#5 longhtml

http://www.chinaz.com/program/2008/1011/40500.shtml
PHP自动适应范围的页码分页程序

参照这个教程,对core/spModel.php 做手术,可以实现限制显示分页。

if($total_count > $pageSize){
   $total_page = ceil( $total_count / $pageSize );
   $page = min(intval(max($page, 1)), $total_count); // 对页码进行规范运算
   $this->pageData = array(
    "total_count" => $total_count,                                 // 总记录数
    "page_size"   => $pageSize,                                    // 分页大小
    "total_page"  => $total_page,                                  // 总页数
    "first_page"  => 1,                                            // 第一页
    "prev_page"   => ( ( 1 == $page ) ? 1 : ($page - 1) ),         // 上一页
    "next_page"   => ( ( $page == $total_page ) ? $total_page : ($page + 1)),     // 下一页
    "last_page"   => $total_page,                                  // 最后一页
    "current_page"=> $page,                                        // 当前页
    "all_pages"   => array()                                    // 全部页码
   );
   $pagelen = 9;
   $pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//页码个数
   $pageoffset = ($pagelen-1)/2;//页码个数左右偏移量

   if($total_page>$pagelen)
   {
    if($page <= $pageoffset){
     for($i=1; $i <= $total_page; $i++)$this->pageData['all_pages'][] = $i;  

     $i = $total_page-$pagelen+1;
     for($i; $i <= $total_page;$i++)$this->pageData['all_pages'][] = $i;
    }
    else
    {
     if($page+$pageoffset>=$total_page+1)
     {
      for($i=$total_page-$pagelen+1; $i <= $total_page; $i++)$this->pageData['all_pages'][] = $i;  
     }
     else
     {
        for($i=$page-$pageoffset; $i <= $page+$pageoffset; $i++)$this->pageData['all_pages'][] = $i;   
     }
    }
   
   }
   $limit = ($page - 1) * $pageSize . "," . $pageSize;
   if('findSql'==$func_name)$conditions = $this->model_obj->_db->setlimit($conditions, $limit);
  }

2013-05-02 19:29:40

#6 longhtml

longhtml 发表于 2013-5-2 19:29
http://www.chinaz.com/program/2008/1011/40500.shtml
PHP自动适应范围的页码分页程序
刚才测试,找到一处错误,更正如下
if($page <= $pageoffset){
    for($i=1; $i <= $pagelen; $i++)$this->pageData['all_pages'][] = $i;   
}

2013-05-02 19:45:25

#7 快信达

这个完全可以加到手册里面啊 非常有用的东西 用分页都会用到这个

2014-05-27 20:38:36