使用CMS模板建设网站的时候,发布文章时,有些文章过长,需要分成好几页来显示。
但是分页太多的话,会造成要点击数次才能看完,有些读者希望能够一页显示,在本页内看完不再分页。
需要更改dedecms后台代码来实现这个效果。
第一步:打开dedecms的代码后台,进入到include文件夹中。找到arc.archives.class.php文件,在修改文件前,先拷贝一份,以防达不到预期效果,代码无法恢复。
打开代码,找到
$this->Fields['userip'] = $this->addTableRow['userip'];代码处,添加下列代码:
$this->Fields['body2'] = $this->addTableRow['body'];//增加BODY全文阅读代码
该步骤自定义一个标签body2,并添加相关的处理函数。
第二步:对上面定义的body2标签进行处理,原理是去掉分页显示标记符,替换成指定字符串,生成新的页面。
找到代码处:$this->dsql->ExecuteNoneQuery("Update `dede_archives` SET ismake=1 WHERE id='".$this->ArcID."'");
在上一行添加body2的处理函数
//增加BODY全文阅读代码
if($this->TotalPage > 1) {
//用正则匹配把分页符去掉
$this->Fields['body2'] = preg_replace('/
/U', '',$this->Fields['body2']);$this->SplitFields = explode("#p2222#",$this->Fields['body2']);
$this->Fields['tmptitle'] = (empty($this->Fields['tmptitle']) ? $this->Fields['title'] : $this->Fields['tmptitle']);
$this->Fields['title'] = $this->Fields['tmptitle'];
$this->TotalPage = count($this->SplitFields);
$this->Fields['totalpage'] = $this->TotalPage;
$TRUEfilenameall = $this->GetTruePath().$fileFirst."_all.".$this->ShortName;
$this->ParseDMFields(1,0);
$this->dtp->SaveTo($TRUEfilenameall);
if($cfg_remote_site=='Y' && $isremote == 1)
{
//分析远程文件路径
$remotefile = str_replace(DEDEROOT, '', $TRUEfilename);
$localfile = '..'.$remotefile;
//创建远程文件夹
$remotedir = preg_replace("#[^\/]*\.html#", '', $remotefile);
$this->ftp->rmkdir($remotedir);
$this->ftp->upload($localfile, $remotefile, 'ascii');
}
}
//增加BODY全文阅读代码
第三步:在分页处理函数中,添加“整页阅读”的标记链接。
函数 function GetPagebreak($totalPage, $nowPage, $aid)中
在return前添加代码,在DEDECMS 5.7版本,大概在1026行
$PageList.= "<li><a href='".$this->NameFirst."_all.".$this->ShortName."'>阅读全文</a></li>";//增加BODY全文阅读代码
把以上红色代码添加上去,一键更新网站和系统缓存,查看效果
您也可以点击编辑好的(点击下载)