Discuz的分页函数multi分析

//$num 为总共的条数比如说这个分类下共有15篇文章 // $perpage为每页要显示的条数 //$curpage为当前的页数 //$mpurl为url的除去表示页数变量的一部分, //$page为$multipage这个字符串中要显示的表示页数的变量个数 //$maxpages为最大的页数值此函数最后有一句$maxpage = $realpages; function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = TRUE, $simple = FALSE) { global $maxpage; $ajaxtarget = !emptyempty($_GET[‘ajaxtarget’]) ? " ajaxtarget=\&;".dhtmlspecialchars($_GET[‘ajaxtarget’])."\&; " : ”; $multipage = ”; $mpurl .= strpos($mpurl, ‘?’) ? ‘&’ : ‘?’; $realpages = 1; //判断总条数是否大于设置的每页要显示的条数 if($num > $perpage) { //设置在$multipage中当前页数之前还要输出几个页数 $offset = 2; $realpages = @ceil($num / $perpage); //总共的页数(不知道$maxpages的意思),这里假设是15条 $pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages; //如果总页数小于multipage中要输出的页数$page,则只输出到实际页数为止 if($page > $pages) { $from = 1; $to = $pages; //如果大于的话,就要输出$page个页数(我们假设的的15条就符合这个条件) } else { $from = $curpage – $offset; $to = $from + $page – 1; //假设curpage为4,目前为止,from为2,to为11 //下面假设curpage为1 if($from < 1) { $to = $curpage + 1 – $from;(****不明白***) $from = 1; //目前为止from为1,to为3 if($to – $from < $page) { //因为这里的前提条件是总条数大于page,所以,如果$to-$from小于page的话显然达不到目的,应把$to设置为$page $to = $page; }//目前为止 from为1 ,to为10 } elseif($to > $pages) {//to是不可以大于总页数的 $from = $pages – $page + 1; $to = $pages; } } $multipage = ($curpage – $offset > 1 && $pages > $page ? ‘<a href="’.$mpurl.’page=1" class="first"’.$ajaxtarget.’>1 …</a>’ : ”). ($curpage > 1 && !$simple ? ‘<a href="’.$mpurl.’page=’.($curpage – 1).’" class="prev"’.$ajaxtarget.’>??</a>’ : ”); for($i = $from; $i <= $to; $i++) { $multipage .= $i == $curpage ? ‘<strong>’.$i.'</strong>’ : ‘<a href="’.$mpurl.’page=’.$i.($ajaxtarget && $i == $pages && $autogoto ? ‘#’ : ”).’"’.$ajaxtarget.’>’.$i.'</a>’; } $multipage .= ($curpage < $pages && !$simple ? ‘<a href="’.$mpurl.’page=’.($curpage + 1).’" class="next"’.$ajaxtarget.’>??</a>’ : ”). ($to < $pages ? ‘<a href="’.$mpurl.’page=’.$pages.’" class="last"’.$ajaxtarget.’>… ‘.$realpages.'</a>’ : ”). (!$simple && $pages > $page && !$ajaxtarget ? ‘<kbd><input type="text" name="custompage" size="3"/></kbd>’ : ”); $multipage = $multipage ? ‘<div class="pages">’.(!$simple ? ‘<em> ‘.$num.’ </em>’ : ”).$multipage.'</div>’ : ”; } $maxpage = $realpages; return $multipage; }[/php] 大家也可以顺便看下我自己修改自Discuz!的分页函数,实际上也就没修改什么,就是修改了个输出的html代码。:) [php] if($num > $perpage) { $page = 11; $offset = 5; $realpages = @ceil($num / $perpage); $pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages; if($page > $pages) { $from = 1; $to = $pages; } else { $from = $curpage – $offset; $to = $from + $page – 1; if($from < 1) { $to = $curpage + 1 – $from; $from = 1; if($to – $from < $page) { $to = $page; } } elseif($to > $pages) { $from = $pages – $page + 1; $to = $pages; } } $multipage[‘left’] = $curpage > 1 ? ‘<a href="’.$mpurl.($curpage – 1).’.html">上一页</a> ‘ : ”; $multipage[‘right’] = ”; for($i = $from; $i <= $to; $i++) { $multipage[‘left’] .= $i < $curpage ? ‘<a href="’.$mpurl.$i.’.html">’.$i.'</a> ‘ : ”; $multipage[‘right’] .= $i > $curpage ? ‘<a href="’.$mpurl.$i.’.html">’.$i.'</a> ‘ : ”; } $multipage[‘right’] .= $curpage < $realpages ? ‘<a href="’.$mpurl.($curpage + 1).’.html">下一页</a> ‘ : ”; }走走停停,不要害怕错过什么,

Discuz的分页函数multi分析

相关文章:

你感兴趣的文章:

标签云: