discuz分頁的使用
阿新 • • 發佈:2019-01-25
Discuz的分頁函式multi分析,在global.func.php檔案中。
$perpage為每頁要顯示的條數
$curpage為當前的頁數
$mpurl為url的除去表示頁數變數的一部分
$page為$multipage這個字串中要顯示的表示頁數的變數個數
$maxpages為最大的頁數值 此函式最後有一句$maxpage = $realpages;
先看下幾個引數吧
$num 為總共的條數 比如說這個分類下共有15篇文章$perpage為每頁要顯示的條數
$curpage為當前的頁數
$mpurl為url的除去表示頁數變數的一部分
$page為$multipage這個字串中要顯示的表示頁數的變數個數
$maxpages為最大的頁數值 此函式最後有一句$maxpage = $realpages;
<?php 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; } // 大家也可以順便看下我的例項: $list = array(); $pricount = 0; $multi = ''; $count = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('portal_article_title')." at WHERE $wheresql"), 0); if($count) { $query = DB::query("SELECT * FROM ".DB::table('portal_article_title')." at WHERE $wheresql ORDER BY at.dateline DESC LIMIT $start,$perpage"); while ($value = DB::fetch($query)) { $value['catname'] = $value['catid']==$cat['catid']?$cat['catname']:$cat['subs'][$value['catid']]['catname']; if($value['pic']) { $value['pic'] = pic_get($value['pic'], 'portal', $value['thumb'], $value['remote']); } $value['dateline'] = dgmdate($value['dateline']); if($value['status'] == 0 || $value['uid'] == $_G['uid'] || $_G['adminid'] == 1) { $list[] = $value; }else{ $pricount++; } } $multi = multi($count, $perpage, $page, $cat['caturl']); } // 例項 $cat['caturl']="list.php?ac=1"; $wheresql = "at.catid='$catid'"; $wheresql .= " AND at.status='0'"; $perpage = 3; $page = max(1, intval($_GET['page'])); $start = ($page-1)*$perpage; if($start<0) $start = 0; $list = array(); $pricount = 0; $multi = ''; $count = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('portal_article_title')." at WHERE $wheresql"), 0); if($count) { $query = DB::query("SELECT * FROM ".DB::table('portal_article_title')." at WHERE $wheresql ORDER BY at.dateline DESC LIMIT $start,$perpage"); while ($value = DB::fetch($query)) { $list[] = $value; } $multi = multi($count, $perpage, $page, $cat['caturl']); }