您好,欢迎来到菜鸟吧源码网(www.cniao8.com)本站只做精品网站源码!
  • 首 页
  • 菜鸟云
  • 公告:本站资源均来源于互联网及会员投稿发布,所有资源仅供学习参考研究使用,请勿商用或其它非法用途,商用请购买正版,否则产生一切后果由用户自行承担!谢谢!

     

    当前位置:主页 > 站长学堂 > dede教程 >
    dedecms独立模型分页功能的完善
    时间:2020-03-01 11:41 作者:菜鸟吧 浏览:收藏 挑错 打印

    dedecms其实在架构方面没什么问题,但是估计里面有些功能是新手做的吧,有很多待完善的地方,比如分页功能,从代码可以直接看出当时的负责人有敷衍了事的心里。

    dede的分页如果有两个页码显示的话,无法显示出总的文章数,举个例子:

    在普通文章模型下面,列表的分页是这样的:

    dedecms独立模型分页功能的完善

    但是在独立模型中就成了这样了

    dedecms独立模型分页功能的完善

    最后面的共*页*条的信息不见了,相信遇到这个问题的同学首先想到的是自己哪里用错了,其实不是,dede独立模型这里的代码是偷工减料了的。处理独立模型列表的代码在arc.sglistview.class.php中,我们比较下同样负责显示分页的代码段,独立模型和普通模型中有什么区别:

    普通文章模型:

    001/**
    002* 获取动态的分页列表
    003*
    004* @access public
    005* @param string $list_len 列表宽度
    006* @param string $list_len 列表样式
    007* @returnstring
    008*/
    009functionGetPageListDM($list_len,$listitem="index,end,pre,next,pageno")
    010{
    011global $cfg_rewrite;
    012$prepage = $nextpage = '';
    013$prepagenum = $this->PageNo-1;
    014$nextpagenum = $this->PageNo+1;
    015if($list_len==''|| preg_match("/[^0-9]/", $list_len))
    016{
    017$list_len=3;
    018}
    019$totalpage = ceil($this->TotalResult/$this->PageSize);
    020if($totalpage<=1 && $this->TotalResult>0)
    021{
    022return"<li><span class=\"pageinfo\">共 1 页/".$this->TotalResult." 条记录</span></li>\r\n";
    023}
    024if($this->TotalResult == 0)
    025{
    026return"<li><span class=\"pageinfo\">共 0 页/".$this->TotalResult." 条记录</span></li>\r\n";
    027}
    028$maininfo = "<li><span class=\"pageinfo\">共 <strong>{$totalpage}</strong>页<strong>".$this->TotalResult."</strong>条</span></li>\r\n";
    029$purl = $this->GetCurUrl();
    030// 如果开启为静态,则对规则进行替换
    031if($cfg_rewrite == 'Y')
    032{
    033$nowurls = preg_replace("/\-/", ".php?", $purl);
    034$nowurls = explode("?", $nowurls);
    035$purl = $nowurls[0];
    036}
    037$geturl = "tid=".$this->TypeID."&TotalResult=".$this->TotalResult."&";
    038$purl .= '?'.$geturl;
    039$optionlist = '';
    040//$hidenform = "<input type='hidden' name='tid' value='".$this->TypeID."'>\r\n";
    041//$hidenform .= "<input type='hidden' name='TotalResult' value='".$this->TotalResult."'>\r\n";
    042//获得上一页和下一页的链接
    043if($this->PageNo != 1)
    044{
    045$prepage.="<li><a href='".$purl."PageNo=$prepagenum'>上一页</a></li>\r\n";
    046$indexpage="<li><a href='".$purl."PageNo=1'>首页</a></li>\r\n";
    047}
    048else
    049{
    050$indexpage="<li><a>首页</a></li>\r\n";
    051}
    052if($this->PageNo!=$totalpage && $totalpage>1)
    053{
    054$nextpage.="<li><a href='".$purl."PageNo=$nextpagenum'>下一页</a></li>\r\n";
    055$endpage="<li><a href='".$purl."PageNo=$totalpage'>末页</a></li>\r\n";
    056}
    057else
    058{
    059$endpage="<li><a>末页</a></li>\r\n";
    060}
    061//获得数字链接
    062$listdd="";
    063$total_list = $list_len * 2 + 1;
    064if($this->PageNo >= $total_list)
    065{
    066$j = $this->PageNo-$list_len;
    067$total_list = $this->PageNo+$list_len;
    068if($total_list>$totalpage)
    069{
    070$total_list=$totalpage;
    071}
    072}
    073else
    074{
    075$j=1;
    076if($total_list>$totalpage)
    077{
    078$total_list=$totalpage;
    079}
    080}
    081for($j;$j<=$total_list;$j++)
    082{
    083if($j==$this->PageNo)
    084{
    085$listdd.= "<li class=\"thisclass\"><a>$j</a></li>\r\n";
    086}
    087else
    088{
    089$listdd.="<li><a href='".$purl."PageNo=$j'>".$j."</a></li>\r\n";
    090}
    091}
    092$plist = '';
    093if(preg_match('/index/i', $listitem)) $plist .= $indexpage;
    094if(preg_match('/pre/i', $listitem)) $plist .= $prepage;
    095if(preg_match('/pageno/i', $listitem)) $plist .= $listdd;
    096if(preg_match('/next/i', $listitem)) $plist .= $nextpage;
    097if(preg_match('/end/i', $listitem)) $plist .= $endpage;
    098if(preg_match('/option/i', $listitem)) $plist .= $optionlist;
    099if(preg_match('/info/i', $listitem)) $plist .= $maininfo;
    100if($cfg_rewrite == 'Y')
    101{
    102$plist = str_replace('.php?tid=', '-', $plist);
    103$plist = str_replace('&TotalResult=', '-', $plist);
    104$plist = preg_replace("/&PageNo=(\d+)/i",'-\\1.html',$plist);
    105}
    106return$plist;
    107}

    独立模型:

    01/**
    02* 获取动态的分页列表
    03*
    04* @access public
    05* @param int $list_len 列表宽度
    06* @param string $listitem 列表样式
    07* @returnstring
    08*/
    09functionGetPageListDM($list_len,$listitem="index,end,pre,next,pageno")
    10{
    11global $nativeplace,$infotype,$keyword;
    12if(empty($nativeplace)) $nativeplace = 0;
    13if(empty($infotype)) $infotype = 0;
    14if(empty($keyword)) $keyword = '';
    15$prepage = $nextpage = '';
    16$prepagenum = $this->PageNo - 1;
    17$nextpagenum = $this->PageNo + 1;
    18if($list_len==""|| preg_match("/[^0-9]/", $list_len))
    19{
    20$list_len=3;
    21}
    22$totalpage = ceil($this->TotalResult / $this->PageSize);
    23if($totalpage<=1 && $this->TotalResult>0)
    24{
    25return"<span class=\"pageinfo\">共1页/".$this->TotalResult."条记录</span>";
    26}
    27if($this->TotalResult == 0)
    28{
    29return"<span class=\"pageinfo\">共0页/".$this->TotalResult."条记录</span>";
    30}
    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";
    38$purl .= "?".$geturl;
    39//获得上一页和下一页的链接
    40if($this->PageNo != 1)
    41{
    42$prepage.="<li><a href='".$purl."PageNo=$prepagenum'>上一页</a></li>\r\n";
    43$indexpage="<li><a href='".$purl."PageNo=1'>首页</a></li>\r\n";
    44}
    45else
    46{
    47$indexpage="<li><a>首页</a></li>\r\n";
    48}
    49if($this->PageNo!=$totalpage && $totalpage>1)
    50{
    51$nextpage.="<li><a href='".$purl."PageNo=$nextpagenum'>下一页</a></li>\r\n";
    52$endpage="<li><a href='".$purl."PageNo=$totalpage'>末页</a></li>\r\n";
    53}
    54else
    55{
    56$endpage="<li><a>末页</a></li>";
    57}
    58//获得数字链接
    59$listdd="";
    60$total_list = $list_len * 2 + 1;
    61if($this->PageNo >= $total_list)
    62{
    63$j = $this->PageNo - $list_len;
    64$total_list = $this->PageNo + $list_len;
    65if($total_list > $totalpage)
    66{
    67$total_list = $totalpage;
    68}
    69}
    70else
    71{
    72$j=1;
    73if($total_list > $totalpage)
    74{
    75$total_list = $totalpage;
    76}
    77}
    78for($j; $j <= $total_list; $j++)
    79{
    80if($j == $this->PageNo)
    81{
    82$listdd.= "<li class=\"thisclass\"><a>$j</a></li>\r\n";
    83}
    84else
    85{
    86$listdd.="<li><a href='".$purl."PageNo=$j'>".$j."</a></li>\r\n";
    87}
    88}
    89$plist = $indexpage.$prepage.$listdd.$nextpage.$endpage;
    90return$plist;
    91}

    仔细观察 普通模型中在28行左右的位置多了句$maininfo = "<li><span class=\"pageinfo\">共 <strong>{$totalpage}</strong>页<strong>".$this->TotalResult."</strong>条</span></li>\r\n";而在独立模型中则没有。

    而且在最后,普通模型中将$maininfo的值加入了$plist字符串中。(更细节的地方是普通模型还判断了标签中是否有info属性来决定是否加入:

    1if(preg_match('/info/i', $listitem)) $plist .= $maininfo;

    )独立模型中这些都省了。

    要将独立模型修改过来很简单,不过“普通模型还判断了标签中是否有info属性来决定是否加入”这点我就不去实现了,这里不判断直接再任何情况下都加入maininfo:

    查看源码
    打印代码帮助
    01/**
    02* 获取动态的分页列表
    03*
    04* @access public
    05* @param int $list_len 列表宽度
    06* @param string $listitem 列表样式
    07* @returnstring
    08*/
    09functionGetPageListDM($list_len,$listitem="index,end,pre,next,pageno")
    10{
    11global $nativeplace,$infotype,$keyword;
    12if(empty($nativeplace)) $nativeplace = 0;
    13if(empty($infotype)) $infotype = 0;
    14if(empty($keyword)) $keyword = '';
    15$prepage = $nextpage = '';
    16$prepagenum = $this->PageNo - 1;
    17$nextpagenum = $this->PageNo + 1;
    18if($list_len==""|| preg_match("/[^0-9]/", $list_len))
    19{
    20$list_len=3;
    21}
    22$totalpage = ceil($this->TotalResult / $this->PageSize);
    23if($totalpage<=1 && $this->TotalResult>0)
    24{
    25return"<span class=\"pageinfo\">共1页/".$this->TotalResult."条记录</span>";
    26}
    27if($this->TotalResult == 0)
    28{
    29return"<span class=\"pageinfo\">共0页/".$this->TotalResult."条记录</span>";
    30}
    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";
    39$purl .= "?".$geturl;
    40//获得上一页和下一页的链接
    41if($this->PageNo != 1)
    42{
    43$prepage.="<li><a href='".$purl."PageNo=$prepagenum'>上一页</a></li>\r\n";
    44$indexpage="<li><a href='".$purl."PageNo=1'>首页</a></li>\r\n";
    45}
    46else
    47{
    48$indexpage="<li><a>首页</a></li>\r\n";
    49}
    50if($this->PageNo!=$totalpage && $totalpage>1)
    51{
    52$nextpage.="<li><a href='".$purl."PageNo=$nextpagenum'>下一页</a></li>\r\n";
    53$endpage="<li><a href='".$purl."PageNo=$totalpage'>末页</a></li>\r\n";
    54}
    55else
    56{
    57$endpage="<li><a>末页</a></li>";
    58}
    59//获得数字链接
    60$listdd="";
    61$total_list = $list_len * 2 + 1;
    62if($this->PageNo >= $total_list)
    63{
    64$j = $this->PageNo - $list_len;
    65$total_list = $this->PageNo + $list_len;
    66if($total_list > $totalpage)
    67{
    68$total_list = $totalpage;
    69}
    70}
    71else
    72{
    73$j=1;
    74if($total_list > $totalpage)
    75{
    76$total_list = $totalpage;
    77}
    78}
    79for($j; $j <= $total_list; $j++)
    80{
    81if($j == $this->PageNo)
    82{
    83$listdd.= "<li class=\"thisclass\"><a>$j</a></li>\r\n";
    84}
    85else
    86{
    87$listdd.="<li><a href='".$purl."PageNo=$j'>".$j."</a></li>\r\n";
    88}
    89}
    90$plist = $indexpage.$prepage.$listdd.$nextpage.$endpage;;
    91return$plist;
    92}


    郑重声明:
    本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
    我们不承担任何技术及版权问题,且不对任何资源负法律责任。
    如无法下载,联系站长索要。
    如有侵犯您的版权,请给我们来信:admin@cniao8.com,我们尽快处理。

    织梦中{dede:channel}无法调用隐藏栏目解决方法织梦中{dede:channel}无法调用隐藏栏目
    DEDECMS批量导入excel数据到后台文章系统的开发教程DEDECMS批量导入excel数据到后台文章系
    织梦58织梦模板加固版教程详解织梦58织梦模板加固版教程详解