Discuz的分页函数multi分析

来源:互联网 发布:官方波段选股王软件 编辑:程序博客网 时间:2024/06/07 02:18

Discuz的分页函数multi分析,在global.func.php文件中。

[php] view plaincopy
  1. //先看下几个参数吧      
  2. //$num 为总共的条数   比如说这个分类下共有15篇文章      
  3. // $perpage为每页要显示的条数      
  4. //$curpage为当前的页数      
  5. //$mpurl为url的除去表示页数变量的一部分,      
  6. //$page为$multipage这个字符串中要显示的表示页数的变量个数      
  7. //$maxpages为最大的页数值   此函数最后有一句$maxpage = $realpages;      
  8. function multi($num$perpage$curpage$mpurl$maxpages = 0, $page = 10, $autogoto = TRUE, $simple = FALSE) {      
  9.      global $maxpage;      
  10.     $ajaxtarget = !empty($_GET['ajaxtarget']) ? " ajaxtarget=/"".dhtmlspecialchars($_GET['ajaxtarget'])."/" " : '';      
  11.      
  12.     $multipage = '';      
  13.     $mpurl .= strpos($mpurl'?') ? '&' : '?';      
  14.     $realpages = 1;      
  15.      //判断总条数是否大于设置的每页要显示的条数      
  16.     if($num > $perpage) {      
  17.     //设置在$multipage中当前页数之前还要输出几个页数      
  18.         $offset = 2;      
  19.      
  20.         $realpages = @ceil($num / $perpage);      
  21.     //总共的页数(不知道$maxpages的意思),这里假设是15条      
  22.         $pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages;      
  23.     //如果总页数小于multipage中要输出的页数$page,则只输出到实际页数为止        
  24.         if($page > $pages) {      
  25.             $from = 1;      
  26.             $to = $pages;      
  27.     //如果大于的话,就要输出$page个页数(我们假设的的15条就符合这个条件)      
  28.         } else {      
  29.             $from = $curpage - $offset;      
  30.             $to = $from + $page - 1;      
  31.             //假设curpage为4,目前为止,from为2,to为11      
  32.              //下面假设curpage为1      
  33.             
  34.             if($from < 1) {      
  35.                 $to = $curpage + 1 - $from;(****不明白***)      
  36.                  $from = 1;      
  37.                 //目前为止from为1,to为3      
  38.                 if($to - $from < $page) {      
  39.                     //因为这里的前提条件是总条数大于page,所以,如果$to-$from小于page的话显然达不到目的,应把$to设置为$page      
  40.                     $to = $page;      
  41.                  }//目前为止 from为1 ,to为10      
  42.             } elseif($to > $pages) {//to是不可以大于总页数的      
  43.                 $from = $pages - $page + 1;      
  44.                 $to = $pages;      
  45.              }      
  46.             
  47.          }      
  48.      
  49.         $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="'.$mpurl.'page=1" mce_href="'.$mpurl.'page=1" class="first"'.$ajaxtarget.'>1 ...</a>' : '').      
  50.              ($curpage > 1 && !$simple ? '<a href="'.$mpurl.'page='.($curpage - 1).'" mce_href="'.$mpurl.'page='.($curpage - 1).'" class="prev"'.$ajaxtarget.'>‹‹</a>' : '');      
  51.          for($i = $from$i <= $to$i++) {      
  52.             $multipage .= $i == $curpage ? '<strong>'.$i.'</strong>' :      
  53.                 '<a href="'.$mpurl.'page='.$i.($ajaxtarget && $i == $pages && $autogoto ? '#' : '').'" mce_href="'.$mpurl.'page='.$i.($ajaxtarget && $i == $pages && $autogoto ? '#' : '').'"'.$ajaxtarget.'>'.$i.'</a>';      
  54.          }      
  55.      
  56.         $multipage .= ($curpage < $pages && !$simple ? '<a href="'.$mpurl.'page='.($curpage + 1).'" mce_href="'.$mpurl.'page='.($curpage + 1).'" class="next"'.$ajaxtarget.'>››</a>' : '').      
  57.              ($to < $pages ? '<a href="'.$mpurl.'page='.$pages.'" mce_href="'.$mpurl.'page='.$pages.'" class="last"'.$ajaxtarget.'>... '.$realpages.'</a>' : '').      
  58.              (!$simple && $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3"   /></kbd>' : '');      
  59.      
  60.         $multipage = $multipage ? '<div class="pages">'.(!$simple ? '<em> '.$num.' </em>' : '').$multipage.'</div>' : '';      
  61.      }      
  62.     $maxpage = $realpages;      
  63.      return $multipage;      
  64. }  

大家也可以顺便看下我自己修改自Discuz!的分页函数,实际上也就没修改什么,就是修改了个输出的html代码。:)

[php] view plaincopy
  1. if($num > $perpage) {  
  2.     $page = 11;  
  3.     $offset = 5;  
  4.     $realpages = @ceil($num / $perpage);  
  5.     $pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages;  
  6.      if($page > $pages) {  
  7.         $from = 1;  
  8.         $to = $pages;  
  9.      } else {  
  10.         $from = $curpage - $offset;  
  11.         $to = $from + $page - 1;  
  12.          if($from < 1) {  
  13.             $to = $curpage + 1 - $from;  
  14.             $from = 1;  
  15.              if($to - $from < $page) {  
  16.                 $to = $page;  
  17.              }  
  18.          } elseif($to > $pages) {  
  19.             $from = $pages - $page + 1;  
  20.             $to = $pages;  
  21.          }  
  22.      }  
  23.         $multipage['left'] = $curpage > 1 ? '<a href="'.$mpurl.($curpage - 1).'.html" mce_href="'.$mpurl.($curpage - 1).'.html">上一页</a> ' : '';  
  24.         $multipage['right'] = '';  
  25.      for($i = $from$i <= $to$i++) {  
  26.         $multipage['left'] .= $i < $curpage ? '<a href="'.$mpurl.$i.'.html" mce_href="'.$mpurl.$i.'.html">'.$i.'</a> ' : '';  
  27.         $multipage['right'] .= $i > $curpage ? '<a href="'.$mpurl.$i.'.html" mce_href="'.$mpurl.$i.'.html">'.$i.'</a> ' : '';  
  28.      }  
  29.         $multipage['right'] .= $curpage < $realpages ? '<a href="'.$mpurl.($curpage + 1).'.html" mce_href="'.$mpurl.($curpage + 1).'.html">下一页</a> ' : '';  
  30. }  

$multipage['left']和$multipage['right']是分别放在左右两边的,个人自我感觉良好,欢迎大家就此去论坛讨论Discuz!分页函数。

原创粉丝点击