phpcms的定時發布功能是個好東西,可惜現在的V9版本就沒有了。只有老版本phpcms2008sp4版才有這個功能。
這個功能雖然好,但是卻有個小的BUG,那就是當你修改發布時間比原來指定的定時發布時間要提前(也就是比以前提前發布)就不能再定時發布了,修改時間之后就直接出現了已經發布現象。
經中國知識網的技術人員多次常識研究之后終于搞出來了一個切實可用的方法,下面就提供給大家供參考。phpcms修改發布時間后就不能定時發布的解決方案:1、找到common.inc.php這個文件。
//增加判斷如果發布時間大于當前時間則設定為定時發布狀態98 $info['status'] = ($status == 2 || $status == 3) ? $status : ($allow_manage ? ($PHPCMS['publish'] && (strtotime($info['inputtime']) > TIME) ? 98 : 99) : 3); if(isset($info['inputtime'])) $info['updatetime'] = $info['inputtime']; $contentid = $c->add($info,$cat_selected); //如果狀態為定時發布,文章id作為key,發布時間作為value,寫入緩存 if($info['status']==98) { $tmp_publisharr = cache_read('publish.php'); $tmp_publisharr[$contentid] = strtotime($info['updatetime']); cache_write('publish.php', $tmp_publisharr); unset($tmp_publisharr); }
2、查找以上代碼,并修改成下面這段代碼:
//增加判斷如果發布時間大于當前時間則設定為定時發布狀態98 $info['status'] = ($status == 2 || $status == 3) ? $status : ($allow_manage ? ($PHPCMS['publish'] && (strtotime($info['inputtime']) > TIME) ? 98 : 99) : 3); if(isset($info['inputtime'])) $info['updatetime'] = $info['inputtime']; //如果狀態為定時發布,文章id作為key,發布時間作為value,寫入緩存 if($info['status']==98) { $tmp_publisharr = cache_read('publish.php'); $tmp_publisharr[$contentid] = strtotime($info['inputtime']); cache_write('publish.php', $tmp_publisharr); unset($tmp_publisharr); } //如果狀態為定時下架,文章id作為key,結束時間作為value,寫入緩存 if(strtotime($info['jstime']) > TIME) { $tmp_publisharr = cache_read('endtime.php'); $tmp_publisharr[$contentid] = strtotime($info['jstime']); cache_write('endtime.php', $tmp_publisharr); unset($tmp_publisharr); }
其實前面的都是錯的,下面的才是正確方法:
所以這一處應該要改進,更新文章URL的判斷不能局限在文章狀態是99的文章,而應該是>=98的文章,要包括定時發布的文章
要改正也是簡單的,打開admin/url.class.php
找到=99
改為>=98
這樣就解決了這個定時發布小BUG了.