Discuz的分页函数multi分析
来源:互联网 发布:官方波段选股王软件 编辑:程序博客网 时间:2024/06/07 02:18
Discuz的分页函数multi分析,在global.func.php文件中。
- //先看下几个参数吧
- //$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 = !empty($_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" mce_href="'.$mpurl.'page=1" class="first"'.$ajaxtarget.'>1 ...</a>' : '').
- ($curpage > 1 && !$simple ? '<a href="'.$mpurl.'page='.($curpage - 1).'" mce_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 ? '#' : '').'" mce_href="'.$mpurl.'page='.$i.($ajaxtarget && $i == $pages && $autogoto ? '#' : '').'"'.$ajaxtarget.'>'.$i.'</a>';
- }
- $multipage .= ($curpage < $pages && !$simple ? '<a href="'.$mpurl.'page='.($curpage + 1).'" mce_href="'.$mpurl.'page='.($curpage + 1).'" class="next"'.$ajaxtarget.'>››</a>' : '').
- ($to < $pages ? '<a href="'.$mpurl.'page='.$pages.'" mce_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;
- }
大家也可以顺便看下我自己修改自Discuz!的分页函数,实际上也就没修改什么,就是修改了个输出的html代码。:)
- 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" mce_href="'.$mpurl.($curpage - 1).'.html">上一页</a> ' : '';
- $multipage['right'] = '';
- for($i = $from; $i <= $to; $i++) {
- $multipage['left'] .= $i < $curpage ? '<a href="'.$mpurl.$i.'.html" mce_href="'.$mpurl.$i.'.html">'.$i.'</a> ' : '';
- $multipage['right'] .= $i > $curpage ? '<a href="'.$mpurl.$i.'.html" mce_href="'.$mpurl.$i.'.html">'.$i.'</a> ' : '';
- }
- $multipage['right'] .= $curpage < $realpages ? '<a href="'.$mpurl.($curpage + 1).'.html" mce_href="'.$mpurl.($curpage + 1).'.html">下一页</a> ' : '';
- }
$multipage['left']和$multipage['right']是分别放在左右两边的,个人自我感觉良好,欢迎大家就此去论坛讨论Discuz!分页函数。
- Discuz的分页函数multi分析
- Discuz的分页函数multi分析
- discuz的分页函数。
- discuz的PHP分页函数
- discuz分页的使用
- discuz 核心函数分析
- Discuz防止跨站工具的函数dhtmlspecialchars分析
- 分析thinkphp自带的分页函数
- 关于discuz分页应用的补充
- Discuz! 产品的变量分析
- discuz 插件核心函数hookscript分析.
- Discuz!X 源码分析之 ajaxget() 函数
- discuz用到的几个函数
- 码审计:discuz 防注入函数绕过方法分析及没用心的修复补丁
- Discuz防注入函数绕过方法分析及没用心的修复补丁
- Discuz防注入函数绕过方法分析及没用心的修复补丁
- Discuz防注入函数绕过方法分析及没用心的修复补丁
- Discuz防注入函数绕过方法分析及没用心的修复补丁
- Android strings中使用format
- U盘安装 linux server
- SQLServer拆分字符串到临时表
- 适配器模式
- Android - Other - 布局预览失败
- Discuz的分页函数multi分析
- linux shell -----1 变量$#,$@,$0,$1,$2的含义解释
- HTML,JS,CSS教程
- Crystal Reports for Eclipse(1)
- poj 3071 football 概率dp
- 卡特兰数
- Linux tcpdump命令详解
- Oracle分页实现
- Crystal Reports for Eclipse(2)