建站幫助

誠信合作, 高質專業!

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:[email protected]

同時歡迎大家收聽CMSYOU官方微博,相互探討Phpcms!

我要收藏
點個贊吧

相關閱讀

本月熱門

精選推薦

在線客服

掃一掃,關注我們

掃一掃,關注我們
百人牛牛经验分享