phpcms的定時(shí)發(fā)布功能是個(gè)好東西,可惜現(xiàn)在的V9版本就沒(méi)有了。只有老版本phpcms2008sp4版才有這個(gè)功能。
這個(gè)功能雖然好,但是卻有個(gè)小的BUG,那就是當(dāng)你修改發(fā)布時(shí)間比原來(lái)指定的定時(shí)發(fā)布時(shí)間要提前(也就是比以前提前發(fā)布)就不能再定時(shí)發(fā)布了,修改時(shí)間之后就直接出現(xiàn)了已經(jīng)發(fā)布現(xiàn)象。
經(jīng)中國(guó)知識(shí)網(wǎng)的技術(shù)人員多次常識(shí)研究之后終于搞出來(lái)了一個(gè)切實(shí)可用的方法,下面就提供給大家供參考。phpcms修改發(fā)布時(shí)間后就不能定時(shí)發(fā)布的解決方案:1、找到common.inc.php這個(gè)文件。
//增加判斷如果發(fā)布時(shí)間大于當(dāng)前時(shí)間則設(shè)定為定時(shí)發(fā)布狀態(tài)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); //如果狀態(tài)為定時(shí)發(fā)布,文章id作為key,發(fā)布時(shí)間作為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、查找以上代碼,并修改成下面這段代碼:
//增加判斷如果發(fā)布時(shí)間大于當(dāng)前時(shí)間則設(shè)定為定時(shí)發(fā)布狀態(tài)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']; //如果狀態(tài)為定時(shí)發(fā)布,文章id作為key,發(fā)布時(shí)間作為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); } //如果狀態(tài)為定時(shí)下架,文章id作為key,結(jié)束時(shí)間作為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); }
其實(shí)前面的都是錯(cuò)的,下面的才是正確方法:
所以這一處應(yīng)該要改進(jìn),更新文章URL的判斷不能局限在文章?tīng)顟B(tài)是99的文章,而應(yīng)該是>=98的文章,要包括定時(shí)發(fā)布的文章
要改正也是簡(jiǎn)單的,打開(kāi)admin/url.class.php
找到=99
改為>=98
這樣就解決了這個(gè)定時(shí)發(fā)布小BUG了.