这个功能虽然好,但是却有个小的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了.