Phpcms v9的推荐位位置:内容 > 内容相关设置 > 推荐位管理 > 管理推荐位,点击右侧的修改,则显示这样的页面:
Phpcms v9推荐位修改页面
关于推荐位的作用和调用,在这里附带说下:
推荐位是网站内容的一种聚合形式,常见的形式网站头条,栏目头条,幻灯片推荐等等,在Phpcms v9中,使用推荐位position可以很简单的完成。 Phpcms v9内容模块中,推荐位的action操作是position,根据相应的posid推荐位ID来获取对应推荐位的网站信息,在网站后台内容模块下,推荐位管理可以看到推荐位的相关信息。 在推荐位中用的比较多的排序方式是listorder,根据后台的排序顺序显示信息。
Phpcms v9推荐位调用说明:
{pc:content action="position" posid="2" catid="11" order="listorder DESC" num="6"} {loop $data $r} <li><a href="{$r[url]}" title="{$r[title]}"><img src="{thumb($r[thumb],330,245)}" alt="{$r[title]}" class="thumbimage"/><span></span></a><h3><a href="{$r[url]}" title="{$r[title]}">{$r[title]}</a><span>{date('Y-m-d',$r[inputtime])}</span></h3></li> {/loop} {/pc}
说明:
action="position":表示是推荐位 posid=2 :指定调用推荐位id为2的内容 order="listorder DESC" :排序采用自定义排序,也可以采用id, sort=desc 就是按文章发布ID的降序排序。 num="6":表示显示6条记录。 其他的{$r[url]}、{$r[title]}、{thumb($r[thumb],330,245)}、{date('Y-m-d',$r[inputtime])}是常规的网址、标题、缩略图裁剪、发布时间的调用。
步入正题:Phpcms v9旧版本里边,修改推荐位属性的时候,最大保存条数有时会保存不上,或者明明设置了最大条数,结果保存了更多的数据(旧的数据没有移出推荐位),怎么修正?
1、找到/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.")"); }
这样修改后在修改文章修改了推荐位后就可以更新推荐位内的推荐新闻条数。
2、修正新添加的新闻推荐不能更新的问题,需要修改以/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.")"); }
修改文件后,需要在后台更新缓存。
这样修改完后推荐位最大保存条数就生效了,添加的时候总会比设置的值多一条用于备用。
一般情况,如果前台调用10篇,我们可以设置这个数值为20或者50,这样可以容纳多的数据,之后一些文章取消了推荐也不会太大影响。