phpcmsv9系統一直是建站的首選。最的筆者在使用的過程中發現推薦位最大保存條數不生效,不管設置成多少在推薦位信息管理里查看還是一直在增加。為了簡化數據庫大小及方便在推薦位里查找了近推送的數據,就對代碼進行了改選,使其生效。
在文件/phpcms/modules/admin/classes/push_api.class.php第180行附近查找
//顏色選擇為隱藏域 在這里進行取值
$info['data']['style'] = $d['style'];
$info['thumb'] = $info['data']['thumb'] ? 1 : 0;
$info['siteid'] = get_siteid();
$info['data'] = array2string($info['data']);
$info['expiration'] = $expiration;
在其下添加如下代碼:
// 添加處理推薦位刪除過期數據流程
$this->db = pc_base::load_model('position_model');
$maxnum = $this->db->get_one("`posid` = ".$pid);
$ids=$pos_data->select(array('posid'=>$pid),'id',($maxnum['maxnum']).",10000",'listorder DESC');
if($ids){
foreach ($ids as $k => $v) {
$idsarr.=$v['id'].",";
}
$idsarr=rtrim($idsarr, ',');
$pos_data->query("delete from phpcms_position_data where `posid` =". $pid." and id in (".$idsarr.")");
}
這樣修改后在修改文章修改了推薦位后就可以更新推薦位內的推薦新聞條數。但是新添加的新聞直接打推薦一還是不能更新。還需要修改以下文件。
在文件/phpcms/modules/content/fields/posid/update.inc.php第16行附近查找
$thumb = $this->data['thumb'] ? 1 : 0;
在其下添加如下代碼:
$this->db = pc_base::load_model('position_model');
$maxnum = $this->db->get_one("`posid` = ".$r);
$ids=$position_data_db->select(array('posid'=>$r),'id',($maxnum['maxnum']).",10000",'listorder DESC');
if($ids){
foreach ($ids as $k => $v) {
$idsarr.=$v['id'].",";
}
$idsarr=rtrim($idsarr, ',');
$position_data_db->query("delete from phpcms_position_data where `posid` =". $r." and id in (".$idsarr.")");
}
修改這個文件后需要在后臺更新緩存。這樣修改完后推薦位最大保存條數就生效了,添加的時候總會比設置的值多一條以備查看。
個人建議設置最大保存要比前臺顯示的條數多十條左右,這樣取消一個推薦還有可用的推薦信息在前臺顯示,不至于顯示為空。
新聞熱點
疑難解答