dedecms其实在架构方面没什么问题,但是估计里面有些功能是新手做的吧,有很多待完善的地方,比如分页功能,从代码可以直接看出当时的负责人有敷衍了事的心里。
dede的分页如果有两个页码显示的话,无法显示出总的文章数,举个例子:
在普通文章模型下面,列表的分页是这样的:
但是在独立模型中就成了这样了
最后面的共*页*条的信息不见了,相信遇到这个问题的同学首先想到的是自己哪里用错了,其实不是,dede独立模型这里的代码是偷工减料了的。处理独立模型列表的代码在arc.sglistview.class.php中,我们比较下同样负责显示分页的代码段,独立模型和普通模型中有什么区别:
普通文章模型:
005 | * @param string $list_len 列表宽度 |
006 | * @param string $list_len 列表样式 |
009 | function GetPageListDM($list_len,$listitem= "index,end,pre,next,pageno" ) |
012 | $prepage = $nextpage = '' ; |
013 | $prepagenum = $this->PageNo-1; |
014 | $nextpagenum = $this->PageNo+1; |
015 | if ($list_len== '' || preg_match( "/[^0-9]/" , $list_len)) |
019 | $totalpage = ceil($this->TotalResult/$this->PageSize); |
020 | if ($totalpage<=1 && $this->TotalResult>0) |
022 | return "<li><span class=\"pageinfo\">共 1 页/" .$this->TotalResult. " 条记录</span></li>\r\n" ; |
024 | if ($this->TotalResult == 0) |
026 | return "<li><span class=\"pageinfo\">共 0 页/" .$this->TotalResult. " 条记录</span></li>\r\n" ; |
028 | $maininfo = "<li><span class=\"pageinfo\">共 <strong>{$totalpage}</strong>页<strong>" .$this->TotalResult. "</strong>条</span></li>\r\n" ; |
029 | $purl = $this->GetCurUrl(); |
031 | if ($cfg_rewrite == 'Y' ) |
033 | $nowurls = preg_replace( "/\-/" , ".php?" , $purl); |
034 | $nowurls = explode( "?" , $nowurls); |
037 | $geturl = "tid=" .$this->TypeID. "&TotalResult=" .$this->TotalResult. "&" ; |
040 | //$hidenform = "<input type='hidden' name='tid' value='" .$this->TypeID. "'>\r\n" ; |
041 | //$hidenform .= "<input type='hidden' name='TotalResult' value='" .$this->TotalResult. "'>\r\n" ; |
043 | if ($this->PageNo != 1) |
045 | $prepage.= "<li><a href='" .$purl. "PageNo=$prepagenum'>上一页</a></li>\r\n" ; |
046 | $indexpage= "<li><a href='" .$purl. "PageNo=1'>首页</a></li>\r\n" ; |
050 | $indexpage= "<li><a>首页</a></li>\r\n" ; |
052 | if ($this->PageNo!=$totalpage && $totalpage>1) |
054 | $nextpage.= "<li><a href='" .$purl. "PageNo=$nextpagenum'>下一页</a></li>\r\n" ; |
055 | $endpage= "<li><a href='" .$purl. "PageNo=$totalpage'>末页</a></li>\r\n" ; |
059 | $endpage= "<li><a>末页</a></li>\r\n" ; |
063 | $total_list = $list_len * 2 + 1; |
064 | if ($this->PageNo >= $total_list) |
066 | $j = $this->PageNo-$list_len; |
067 | $total_list = $this->PageNo+$list_len; |
068 | if ($total_list>$totalpage) |
070 | $total_list=$totalpage; |
076 | if ($total_list>$totalpage) |
078 | $total_list=$totalpage; |
081 | for ($j;$j<=$total_list;$j++) |
085 | $listdd.= "<li class=\"thisclass\"><a>$j</a></li>\r\n" ; |
089 | $listdd.= "<li><a href='" .$purl. "PageNo=$j'>" .$j. "</a></li>\r\n" ; |
093 | if (preg_match( '/index/i' , $listitem)) $plist .= $indexpage; |
094 | if (preg_match( '/pre/i' , $listitem)) $plist .= $prepage; |
095 | if (preg_match( '/pageno/i' , $listitem)) $plist .= $listdd; |
096 | if (preg_match( '/next/i' , $listitem)) $plist .= $nextpage; |
097 | if (preg_match( '/end/i' , $listitem)) $plist .= $endpage; |
098 | if (preg_match( '/option/i' , $listitem)) $plist .= $optionlist; |
099 | if (preg_match( '/info/i' , $listitem)) $plist .= $maininfo; |
100 | if ($cfg_rewrite == 'Y' ) |
102 | $plist = str_replace( '.php?tid=' , '-' , $plist); |
103 | $plist = str_replace( '&TotalResult=' , '-' , $plist); |
104 | $plist = preg_replace( "/&PageNo=(\d+)/i" , '-\\1.html' ,$plist); |
|
独立模型:
05 | * @param int $list_len 列表宽度 |
06 | * @param string $listitem 列表样式 |
09 | function GetPageListDM($list_len,$listitem= "index,end,pre,next,pageno" ) |
11 | global $nativeplace,$infotype,$keyword; |
12 | if (empty($nativeplace)) $nativeplace = 0; |
13 | if (empty($infotype)) $infotype = 0; |
14 | if (empty($keyword)) $keyword = '' ; |
15 | $prepage = $nextpage = '' ; |
16 | $prepagenum = $this->PageNo - 1; |
17 | $nextpagenum = $this->PageNo + 1; |
18 | if ($list_len== "" || preg_match( "/[^0-9]/" , $list_len)) |
22 | $totalpage = ceil($this->TotalResult / $this->PageSize); |
23 | if ($totalpage<=1 && $this->TotalResult>0) |
25 | return "<span class=\"pageinfo\">共1页/" .$this->TotalResult. "条记录</span>" ; |
27 | if ($this->TotalResult == 0) |
29 | return "<span class=\"pageinfo\">共0页/" .$this->TotalResult. "条记录</span>" ; |
31 | $purl = $this->GetCurUrl(); |
32 | $geturl = "tid=" .$this->TypeID. "&TotalResult=" .$this->TotalResult. "&nativeplace=$nativeplace&infotype=$infotype&keyword=" .urlencode($keyword). "&" ; |
33 | $hidenform = "<input type='hidden' name='tid' value='" .$this->TypeID. "' />\r\n" ; |
34 | $hidenform = "<input type='hidden' name='nativeplace' value='$nativeplace' />\r\n" ; |
35 | $hidenform = "<input type='hidden' name='infotype' value='$infotype' />\r\n" ; |
36 | $hidenform = "<input type='hidden' name='keyword' value='$keyword' />\r\n" ; |
37 | $hidenform .= "<input type='hidden' name='TotalResult' value='" .$this->TotalResult. "' />\r\n" ; |
42 | $prepage.= "<li><a href='" .$purl. "PageNo=$prepagenum'>上一页</a></li>\r\n" ; |
43 | $indexpage= "<li><a href='" .$purl. "PageNo=1'>首页</a></li>\r\n" ; |
47 | $indexpage= "<li><a>首页</a></li>\r\n" ; |
49 | if ($this->PageNo!=$totalpage && $totalpage>1) |
51 | $nextpage.= "<li><a href='" .$purl. "PageNo=$nextpagenum'>下一页</a></li>\r\n" ; |
52 | $endpage= "<li><a href='" .$purl. "PageNo=$totalpage'>末页</a></li>\r\n" ; |
56 | $endpage= "<li><a>末页</a></li>" ; |
60 | $total_list = $list_len * 2 + 1; |
61 | if ($this->PageNo >= $total_list) |
63 | $j = $this->PageNo - $list_len; |
64 | $total_list = $this->PageNo + $list_len; |
65 | if ($total_list > $totalpage) |
67 | $total_list = $totalpage; |
73 | if ($total_list > $totalpage) |
75 | $total_list = $totalpage; |
78 | for ($j; $j <= $total_list; $j++) |
80 | if ($j == $this->PageNo) |
82 | $listdd.= "<li class=\"thisclass\"><a>$j</a></li>\r\n" ; |
86 | $listdd.= "<li><a href='" .$purl. "PageNo=$j'>" .$j. "</a></li>\r\n" ; |
89 | $plist = $indexpage.$prepage.$listdd.$nextpage.$endpage; |
|
仔细观察 普通模型中在28行左右的位置多了句$maininfo = "<li><span class=\"pageinfo\">共 <strong>{$totalpage}</strong>页<strong>".$this->TotalResult."</strong>条</span></li>\r\n";而在独立模型中则没有。
而且在最后,普通模型中将$maininfo的值加入了$plist
字符串中。(更细节的地方是普通模型还判断了标签中是否有info属性来决定是否加入:
1 | if (preg_match( '/info/i' , $listitem)) $plist .= $maininfo; |
|
)独立模型中这些都省了。
要将独立模型修改过来很简单,不过“普通模型还判断了标签中是否有info属性来决定是否加入”这点我就不去实现了,这里不判断直接再任何情况下都加入maininfo:
05 | * @param int $list_len 列表宽度 |
06 | * @param string $listitem 列表样式 |
09 | function GetPageListDM($list_len,$listitem= "index,end,pre,next,pageno" ) |
11 | global $nativeplace,$infotype,$keyword; |
12 | if (empty($nativeplace)) $nativeplace = 0; |
13 | if (empty($infotype)) $infotype = 0; |
14 | if (empty($keyword)) $keyword = '' ; |
15 | $prepage = $nextpage = '' ; |
16 | $prepagenum = $this->PageNo - 1; |
17 | $nextpagenum = $this->PageNo + 1; |
18 | if ($list_len== "" || preg_match( "/[^0-9]/" , $list_len)) |
22 | $totalpage = ceil($this->TotalResult / $this->PageSize); |
23 | if ($totalpage<=1 && $this->TotalResult>0) |
25 | return "<span class=\"pageinfo\">共1页/" .$this->TotalResult. "条记录</span>" ; |
27 | if ($this->TotalResult == 0) |
29 | return "<span class=\"pageinfo\">共0页/" .$this->TotalResult. "条记录</span>" ; |
31 | $maininfo = "<li><span class=\"pageinfo\">共 <strong>{$totalpage}</strong>页<strong>" .$this->TotalResult. "</strong>条</span></li>\r\n" ; |
32 | $purl = $this->GetCurUrl(); |
33 | $geturl = "tid=" .$this->TypeID. "&TotalResult=" .$this->TotalResult. "&nativeplace=$nativeplace&infotype=$infotype&keyword=" .urlencode($keyword). "&" ; |
34 | $hidenform = "<input type='hidden' name='tid' value='" .$this->TypeID. "' />\r\n" ; |
35 | $hidenform = "<input type='hidden' name='nativeplace' value='$nativeplace' />\r\n" ; |
36 | $hidenform = "<input type='hidden' name='infotype' value='$infotype' />\r\n" ; |
37 | $hidenform = "<input type='hidden' name='keyword' value='$keyword' />\r\n" ; |
38 | $hidenform .= "<input type='hidden' name='TotalResult' value='" .$this->TotalResult. "' />\r\n" ; |
43 | $prepage.= "<li><a href='" .$purl. "PageNo=$prepagenum'>上一页</a></li>\r\n" ; |
44 | $indexpage= "<li><a href='" .$purl. "PageNo=1'>首页</a></li>\r\n" ; |
48 | $indexpage= "<li><a>首页</a></li>\r\n" ; |
50 | if ($this->PageNo!=$totalpage && $totalpage>1) |
52 | $nextpage.= "<li><a href='" .$purl. "PageNo=$nextpagenum'>下一页</a></li>\r\n" ; |
53 | $endpage= "<li><a href='" .$purl. "PageNo=$totalpage'>末页</a></li>\r\n" ; |
57 | $endpage= "<li><a>末页</a></li>" ; |
61 | $total_list = $list_len * 2 + 1; |
62 | if ($this->PageNo >= $total_list) |
64 | $j = $this->PageNo - $list_len; |
65 | $total_list = $this->PageNo + $list_len; |
66 | if ($total_list > $totalpage) |
68 | $total_list = $totalpage; |
74 | if ($total_list > $totalpage) |
76 | $total_list = $totalpage; |
79 | for ($j; $j <= $total_list; $j++) |
81 | if ($j == $this->PageNo) |
83 | $listdd.= "<li class=\"thisclass\"><a>$j</a></li>\r\n" ; |
87 | $listdd.= "<li><a href='" .$purl. "PageNo=$j'>" .$j. "</a></li>\r\n" ; |
90 | $plist = $indexpage.$prepage.$listdd.$nextpage.$endpage;; |
|
郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
我们不承担任何技术及版权问题,且不对任何资源负法律责任。
如无法下载,联系站长索要。
如有侵犯您的版权,请给我们来信:cainiaovip8@qq.com,我们尽快处理。