悟途网移动版

DEDECMS

悟途网 > CMS > DEDECMS > 正文

DEDECMS怎么实现添加全文阅读浏览效果

2016-01-14 22:24 悟途网 T

使用CMS模板建设网站的时候,发布文章时,有些文章过长,需要分成好几页来显示。

但是分页太多的话,会造成要点击数次才能看完,有些读者希望能够一页显示,在本页内看完不再分页。

需要更改dedecms后台代码来实现这个效果。

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全文阅读代码

把以上红色代码添加上去,一键更新网站和系统缓存,查看效果

您也可以点击编辑好的(点击下载