简介: 用phpcms做网站的时候,有些处所要用到推荐位列表,如幻灯片,出格推荐等。有时候因为文章的重要性问题,但愿文章可以或许凭据靠山配置的排序号来排序。可是,phpcms这里却欠好使了
用phpcms做网站的时候,有些处所要用到推荐位列表,如幻灯片,出格推荐等。有时候因为文章的重要性问题,我但愿文章可以或许凭据靠山配置的排序号来排序。这时代码应该是:
{pc:content action="position" posid="1" order="listorder DESC" num="3"} {loop $data $r} html code {/loop} {/pc}个中order="listorder DESC"就是凭据手工排序的意思。可是会发明,order="listorder DESC"结果和order="id DESC"一样,实际上没有排序降序成果,只能是ID降序或ID升序。 打开数据库查察v9_position_data表,功效你会发明,表中listorder字段跟id是一样的。
最后才找到办理的步伐。
1.打开文件:/phpcms/modules/admin/classes/push_api.class.php
找到:
$info['id'] = $info['listorder'] = $d['id'];就是这一句,当添加文章可能修改文章的时候,把listorder变得跟id一样,以至于,listorder排序不起浸染。
所以上面那句代码应该改为:
$info['id'] = $d['id'];这样一来添加文章可能修改文章的时候就不会窜改listorder的值了。但单单这样还不可,因为推荐标签在取数据的时候,是按照v9_position_data表的listorder来排序的,但靠山更新文章排序的时候,并没有更新v9_position_data这个表的listorder,所以得加上这个成果。 2.打开文件:/phpcms/modules/content/content.php
找到:
foreach($_POST['listorders'] as $id => $listorder) { $this->db->update(array('listorder'=>$listorder),array('id'=>$id)); }在上面的后头加上 //变动推荐位排序开始 $this->db_config = pc_base::load_config('database'); $tablepre = $this->db_config['default']['tablepre']; $this->db->table_name = $tablepre."position_data"; foreach($_POST['listorders'] as $id => $listorder) { $r = $this->db->get_one(array('id'=>$id)); if($r['posid']){ $this->db->update(array('listorder'=>$listorder),array('id'=>$id,modelid=>$modelid)); } } //变动推荐位排序开始
改完这两个处所就可以正常的利用了。 文章来历: