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.")");
}
修改这个文件后需要在后台更新缓存。这样修改完后推荐位最大保存条数就生效了,添加的时候总会比设置的值多一条以备查看。
个人建议设置最大保存要比前台显示的条数多十条左右,这样取消一个推荐还有可用的推荐信息在前台显示,不至于显示为空。
新闻热点
疑难解答