首页 > 代码库 > dedecms会员空间不能分页的解决办法
dedecms会员空间不能分页的解决办法
在用dedecms的时候发现一个很奇怪的bug,就是在会员空间中所有的内容都不能分页,去官方论坛也没能找到解决方法,无奈之下自动动手查找原因,最后发现是include/arc.memberlistview.class.php这个文件的问题,找到这个文件,将以下代码替换掉原来的就可以了。
<?php if(!defined(‘DEDEINC‘)) exit("Request Error!"); require_once(DEDEINC."/dedetemplate.class.php"); $lang_pre_page = ‘上页‘; $lang_next_page = ‘下页‘; $lang_index_page = ‘首页‘; $lang_end_page = ‘末页‘; $lang_record_number = ‘条记录‘; $lang_page = ‘页‘; $lang_total = ‘共‘; class MemberListview { var $dsql = ‘‘; var $tpl = ‘‘; var $pageNO = 1; var $totalPage = 0; var $totalResult = 0; var $pageSize = 25; var $getValues = array(); var $sourceSql = ‘‘; var $isQuery = false; var $randts = 0; /** * 用指定的文档ID进行初始化 * * @access public * @param string $tplfile 模板文件 * @return void */ function __construct($tplfile=‘‘) { $this->sourceSql = ‘‘; $this->pageSize = 25; $this->queryTime = 0; $this->getValues = Array(); $this->randts = time(); $this->dsql = $GLOBALS[‘dsql‘]; $this->SetVar(‘ParseEnv‘,‘datalist‘); $this->tpl = new DedeTemplate(); if($GLOBALS[‘cfg_tplcache‘]==‘N‘) { $this->tpl->isCache = false; } if($tplfile!=‘‘) { $this->tpl->LoadTemplate($tplfile); } } //兼容PHP4 function MemberListview($tplfile=‘‘) { $this->__construct($tplfile); } /** * 设置SQL语句 * * @access public * @param string $sql SQL语句 * @return void */ function SetSource($sql) { $this->sourceSql = $sql; } /** * 设置模板 * 如果想要使用模板中指定的pagesize,必须在调用模板后才调用 SetSource($sql) * * @access public * @param string $tplfile 模板文件 * @return void */ function SetTemplate($tplfile) { $this->tpl->LoadTemplate($tplfile); } /** * 设置模板 * * @access public * @param string $tplfile 模板文件 * @return void */ function SetTemplet($tplfile) { $this->tpl->LoadTemplate($tplfile); } /** * 对config参数及get参数等进行预处理 * * @access private * @return void */ function PreLoad() { global $totalresult,$pageno; if(empty($pageno) || preg_match("/[^0-9]/", $pageno)) { $pageno = 1; } if(empty($totalresult) || preg_match("/[^0-9]/", $totalresult)) { $totalresult = 0; } $this->pageNO = $pageno; $this->totalResult = $totalresult; if(isset($this->tpl->tpCfgs[‘pagesize‘])) { $this->pageSize = $this->tpl->tpCfgs[‘pagesize‘]; } $this->totalPage = ceil($this->totalResult/$this->pageSize); if($this->totalResult==0) { //$this->isQuery = true; //$this->dsql->Execute(‘mbdl‘,$this->sourceSql); //$this->totalResult = $this->dsql->GetTotalRow(‘mbdl‘); //$countQuery = preg_replace("/select[ \r\n\t](.*)[ \r\n\t]from/i","Select count(*) as dd From",$this->sourceSql); $countQuery = preg_replace("#SELECT[ \r\n\t](.*)[ \r\n\t]FROM#is", ‘SELECT COUNT(*) AS dd FROM‘, $this->sourceSql); $countQuery = preg_replace("#ORDER[ \r\n\t]{1,}BY(.*)#is", ‘‘, $countQuery); $row = $this->dsql->GetOne($countQuery); $row[‘dd‘] = empty($row[‘dd‘]) ? 0 : $row[‘dd‘]; $this->totalResult = $row[‘dd‘]; $this->sourceSql .= " limit 0,".$this->pageSize; } else { $this->sourceSql .= " limit ".(($this->pageNO-1) * $this->pageSize).",".$this->pageSize; } } /** * 设置网址的Get参数键值 * * @access public * @param string $key 键 * @param string $value 值 * @return void */ function SetParameter($key, $value) { $this->getValues[$key] = $value; } /** * 设置/获取文档相关的各种变量 * * @access public * @param string $k 键 * @param string $v 值 * @return void */ function SetVar($k, $v) { global $_vars; if(!isset($_vars[$k])) $_vars[$k] = $v; } /** * 获取值 * * @param string $k * @return string */ function GetVar($k) { global $_vars; if(isset($_vars[$k])) return $_vars[$k]; else return ‘‘; } /** * 获取当前页数据列表 * * @access public * @param string $atts 属性 * @param string $refObj 实例化对象 * @param string $fields 字段 * @return array */ function GetArcList($atts,$refObj=‘‘,$fields=array()) { $attlist = "titlelen=30,infolen=200,imgwidth=120,imgheight=90"; FillAtts($atts,$attlist); FillFields($atts,$fields,$refObj); extract($atts, EXTR_OVERWRITE); $rsArray = array(); //global $_vars; //$t1 = Exectime(); if(!$this->isQuery) { $this->dsql->Execute(‘mbdl‘,$this->sourceSql); } $i = 0; while($row = $this->dsql->GetArray(‘mbdl‘)) { $i++; if(!isset($row[‘description‘])) $row[‘description‘] = ‘‘; if(!isset($row[‘color‘])) $row[‘color‘] = ‘‘; if(!isset($row[‘pubdate‘])) $row[‘pubdate‘] = $row[‘senddate‘]; //处理一些特殊字段 $row[‘infos‘] = cn_substr($row[‘description‘],$infolen); $row[‘id‘] = $row[‘id‘]; $row[‘filename‘] = $row[‘arcurl‘] = GetFileUrl($row[‘id‘],$row[‘typeid‘],$row[‘senddate‘],$row[‘title‘],$row[‘ismake‘], $row[‘arcrank‘],$row[‘namerule‘],$row[‘typedir‘],$row[‘money‘],$row[‘filename‘],$row[‘moresite‘],$row[‘siteurl‘],$row[‘sitepath‘]); $row[‘typeurl‘] = GetTypeUrl($row[‘typeid‘],$row[‘typedir‘],$row[‘isdefault‘],$row[‘defaultname‘],$row[‘ispart‘], $row[‘namerule2‘],$row[‘moresite‘],$row[‘siteurl‘],$row[‘sitepath‘]); if($row[‘litpic‘] == ‘-‘ || $row[‘litpic‘] == ‘‘) { $row[‘litpic‘] = $GLOBALS[‘cfg_cmspath‘].‘/images/defaultpic.gif‘; } if(!preg_match("/^http:\/\//i", $row[‘litpic‘]) && $GLOBALS[‘cfg_multi_site‘] == ‘Y‘) { $row[‘litpic‘] = $GLOBALS[‘cfg_mainsite‘].$row[‘litpic‘]; } $row[‘picname‘] = $row[‘litpic‘]; $row[‘stime‘] = GetDateMK($row[‘pubdate‘]); $row[‘typelink‘] = "<a href=http://www.mamicode.com/‘".$row[‘typeurl‘]."‘>".$row[‘typename‘]."</a>"; $row[‘image‘] = "<img src=http://www.mamicode.com/‘".$row[‘picname‘]."‘ border=‘0‘ width=‘$imgwidth‘ height=‘$imgheight‘ alt=‘".preg_replace("/[‘><]/", "", $row[‘title‘])."‘>"; $row[‘imglink‘] = "<a href=http://www.mamicode.com/‘".$row[‘filename‘]."‘>".$row[‘image‘]."</a>"; $row[‘fulltitle‘] = $row[‘title‘]; $row[‘title‘] = cn_substr($row[‘title‘],$titlelen); if($row[‘color‘]!=‘‘) { $row[‘title‘] = "<font color=‘".$row[‘color‘]."‘>".$row[‘title‘]."</font>"; } if(preg_match(‘/b/‘, $row[‘flag‘])) { $row[‘title‘] = "<strong>".$row[‘title‘]."</strong>"; } //$row[‘title‘] = "<b>".$row[‘title‘]."</b>"; $row[‘textlink‘] = "<a href=http://www.mamicode.com/‘".$row[‘filename‘]."‘>".$row[‘title‘]."</a>"; $row[‘plusurl‘] = $row[‘phpurl‘] = $GLOBALS[‘cfg_phpurl‘]; $row[‘memberurl‘] = $GLOBALS[‘cfg_memberurl‘]; $row[‘templeturl‘] = $GLOBALS[‘cfg_templeturl‘]; $rsArray[$i] = $row; if($i >= $this->pageSize) { break; } } $this->dsql->FreeResult(); //echo "执行时间:".(Exectime() - $t1); return $rsArray; } /** * 获取分页导航列表 * * @access public * @param string $atts 属性 * @param string $refObj 实例化对象 * @param string $fields 字段 * @return string */ function GetPageList($atts,$refObj=‘‘,$fields=array()) { global $lang_pre_page,$lang_next_page,$lang_index_page,$lang_end_page,$lang_record_number,$lang_page,$lang_total; $prepage = $nextpage = $geturl= $hidenform = ‘‘; $purl = $this->GetCurUrl(); $prepagenum = $this->pageNO-1; $nextpagenum = $this->pageNO+1; if(!isset($atts[‘listsize‘]) || preg_match("/[^0-9]/", $atts[‘listsize‘])) { $atts[‘listsize‘] = 5; } if(!isset($atts[‘listitem‘])) { $atts[‘listitem‘] = "info,index,end,pre,next,pageno"; } $totalpage = ceil($this->totalResult/$this->pageSize); //echo " {$totalpage}=={$this->totalResult}=={$this->pageSize}"; //无结果或只有一页的情况 if($totalpage<=1 && $this->totalResult > 0) { return "{$lang_total} 1 {$lang_page}/".$this->totalResult.$lang_record_number; } if($this->totalResult == 0) { return "{$lang_total} 0 {$lang_page}/".$this->totalResult.$lang_record_number; } $infos = "<span>{$lang_total} {$totalpage} {$lang_page}/{$this->totalResult}{$lang_record_number}</span> "; if($this->totalResult!=0) { $this->getValues[‘totalresult‘] = $this->totalResult; } if(count($this->getValues)>0) { foreach($this->getValues as $key=>$value) { $value = urlencode($value); $geturl.="$key=$value"."&"; $hidenform.="<input type=‘hidden‘ name=‘$key‘ value=http://www.mamicode.com/‘$value‘>/r/n"; } } $purl .= "?".$geturl; //获得上一页和下一页的链接 if($this->pageNO!=1) { $prepage.="<a href=http://www.mamicode.com/‘".$purl."pageno=$prepagenum‘>$lang_pre_page</a> \r\n"; $indexpage="<a href=http://www.mamicode.com/‘".$purl."pageno=1‘>$lang_index_page</a> \r\n"; } else { $indexpage="$lang_index_page \r\n"; } if($this->pageNO!=$totalpage&&$totalpage>1) { $nextpage.="<a href=http://www.mamicode.com/‘".$purl."pageno=$nextpagenum‘>$lang_next_page</a> \r\n"; $endpage="<a href=http://www.mamicode.com/‘".$purl."pageno=$totalpage‘>$lang_end_page</a> \r\n"; } else { $endpage=" $lang_end_page \r\n"; } //获得数字链接 $listdd=""; $total_list = $atts[‘listsize‘] * 2 + 1; if($this->pageNO>=$total_list) { $j=$this->pageNO-$atts[‘listsize‘]; $total_list=$this->pageNO+$atts[‘listsize‘]; if($total_list>$totalpage) { $total_list=$totalpage; } } else { $j=1; if($total_list>$totalpage) $total_list=$totalpage; } for($j;$j<=$total_list;$j++) { if($j==$this->pageNO) { $listdd.= "<strong>$j</strong> \r\n"; } else { $listdd.="<a href=http://www.mamicode.com/‘".$purl."pageno=$j‘>".$j."</a> \r\n"; } } $plist = "<div class=\"pagelistbox\">\r\n"; //info,index,end,pre,next,pageno,form if(preg_match("/info/i",$atts[‘listitem‘])) { $plist .= $infos; } if(preg_match("/index/i",$atts[‘listitem‘])) { $plist .= $indexpage; } if(preg_match("/pre/i",$atts[‘listitem‘])) { $plist .= $prepage; } if(preg_match("/pageno/i",$atts[‘listitem‘])) { $plist .= $listdd; } if(preg_match("/next/i",$atts[‘listitem‘])) { $plist .= $nextpage; } if(preg_match("/end/i",$atts[‘listitem‘])) { $plist .= $endpage; } if(preg_match("/form/i",$atts[‘listitem‘])) { $plist .=" <form name=‘pagelist‘ action=‘".$this->GetCurUrl()."‘>$hidenform"; if($totalpage>$total_list) { $plist.="<input type=‘text‘ name=‘pageno‘ style=‘padding:0px;width:30px;height:18px‘>\r\n"; $plist.="<input type=‘submit‘ name=‘plistgo‘ value=http://www.mamicode.com/‘GO‘ style=‘padding:0px;width:30px;height:18px;font-size:11px‘>/r/n"; } $plist .= "</form>\r\n"; } $plist .= "</div>\r\n"; return $plist; } /** * 获得当前网址 * * @access public * @return string */ function GetCurUrl() { if(!empty($_SERVER["REQUEST_URI"])) { $nowurl = $_SERVER["REQUEST_URI"]; $nowurls = explode("?",$nowurl); $nowurl = $nowurls[0]; } else { $nowurl = $_SERVER["PHP_SELF"]; } return $nowurl; } //关闭 function Close() { } /** * 显示数据 * * @access public * @return void */ function Display() { if($this->sourceSql != ‘‘) $this->PreLoad(); //在PHP4中,对象引用必须放在display之前,放在其它位置中无效 $this->tpl->SetObject($this); $this->tpl->Display(); } /** * 保存为HTML * * @access public * @param string $filename 文件名称 * @return string */ function SaveTo($filename) { $this->tpl->SaveTo($filename); } }//End Class
dedecms会员空间不能分页的解决办法
dedecms会员空间不能分页的解决办法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。