建站帮助

诚信合作, 高质专业!

Phpcms v9发布文章后栏目只更新前面5页的修改自定义方法

2019-08-17 15:58:06 浏览 我要评论

最近一个资讯网站项目中,客户发现Phpcms v9发布文章后栏目为什么只更新了前面几页、后面的都没自动更新,于是找来问为什么、问这是不是PC V9的Bug,实际上这算不上Bug,试想下:栏目页HTML静态化后,如果有1000页,每次修改添加文章就全部更新一遍,岂不是要很多时间?今天CMSYOU在这里与大家探讨下这个问题,分享Phpcms v9发布文章后栏目只更新前面5页的修改自定义方法。

熟悉Phpcms的朋友一般知道,HTML静态化设置后,添加或者修改文章后,会自动更新文章内容页本身、对应栏目列表、以及首页的HTML静态文件index.html。

如果Phpcms v9默认修改添加文章后,在提交页面就更新生成该栏目列表的所有翻页HTML,这样会比较长时间停留在提交后的提示页面,反而会让用户感觉:Phpcms v9怎么这么卡?添加一篇文章提交后都卡半天?!岂不是反而造成不好的体验呢?

本着研究的态度,我们找到了添加修改文章的方法文件:phpcms/model/content_model.class.php,其中有关更新对应栏目页的方法是在223行、325行左右:

//生成静态

if(!$isimport && $data['status']==99) {

//在添加和修改内容处定义了 INDEX_HTML

if(defined('INDEX_HTML')) $html->index();

if(defined('RELATION_HTML')) $html->create_relation_html($catid);

}

从这里可以看出编辑修改文章后,会自动create_relation_html更新相关的html。从而找到对应的函数文件phpcms/modules/content/classes/html.class.php的390行左右:

/**

* 生成相关栏目列表、只生成前5页

* @param $catid

*/

public function create_relation_html($catid) {

for($page = 1; $page < 6; $page++) {

$this->category($catid,$page);

}

//检查当前栏目的父栏目,如果存在则生成

$arrparentid = $this->categorys[$catid]['arrparentid'];

if($arrparentid) {

$arrparentid = explode(',', $arrparentid);

foreach ($arrparentid as $catid) {

if($catid) $this->category($catid,1);

}

}

}

修改上面的代码中的数字6,可以适当改大一些,比如改成101,则是更新生成列表页的前100页,生成HTML的时间上不会太久,这样就可以实现自动更新栏目页的页数了。

今天的分享就到这里,欢迎大家抱着研究的心态自定义Phpcms,多多分享,如果有好的文章也欢迎投稿,投稿email:info@cmsyou.com。

同时欢迎大家收听CMSYOU官方微博,相互探讨Phpcms!

我要收藏
点个赞吧

相关阅读

本月热门

精选推荐

在线客服

扫一扫,关注我们

扫一扫,关注我们