疆飞
.NET永远年轻,永远热泪盈眶...
phpcms V9 推荐位排序 优化
前言:使用phpcms v9建站的童鞋都知道,phpcms V9的推荐键位在添加推送后系统会自己将文章ID设置为排序值,然后以倒序排列,如果我们想置顶或者扯后一条推送,相当不好操作,因为文章ID都比较长,且显得非常杂乱。于是乎我就将其优化了一下,以便有需要的朋友拿去用!
我的思路是这样的,前台后台排序都以 排序值 和 ID 的方式进行排序,以排序值正序+id倒序的方式进行排列,在推送文章到推荐位时将排序值设置为最大值,这样所有推送后的文章的排序值都是一样,接下来以id的倒序排列,这样做的结果就是和之前phpcms 默认的排序差不多了,关键就在后面了,后面如果我们想将某一条信息设置为第一条,将另一条设置为第二条,只需要在排序里分别输入1和2,这样前台后台都会将其在第一条和第二条来排列显示,未在后台自己手动设置排序值的还是依照ID倒序排列。当然,我们手动推送后没有手动设置排序值的,不会显示任何数字,只是在输入框内提示“未排序”。而最前面就是我们手动排序的文章。是不是很便捷呢?如果需要置顶就将其排序删除或设置为0,就回到了“未排序”状态。
此方法不会修改数据库和核心文件,只是对推送部分和后台 推荐位排序设置的模版进行了一点小修改!
下面是修改和设置方法。
1.取消推送时自动将文章ID设置为排序,
打开phpcms\modules\admin\classes\push_api.class.php 文件,搜索
$info['id'] = $info['listorder'] = $d['id'];
就其更换为:
$info['id'] = $d['id'];
$info['listorder'] = '8388607';
2.修改推荐位后台排序
打开phpcms\modules\admin\position.php 文件,查找:
$pos_arr = $this->db_data->listinfo(array('posid'=>$posid,'siteid'=>$siteid),'listorder DESC', $page, $pagesize = 20);
将其换成 :
$pos_arr = $this->db_data->listinfo(array('posid'=>$posid,'siteid'=>$siteid),'listorder ASC,id DESC', $page, $pagesize = 20);
3.修改后台排序设置和输出显示
打开 phpcms\modules\admin\templates\position_items.tpl.php 文件,将
<td width="10%">
<input name='listorders[<?php echo $info['catid'],'-',$info['id']?/>]' type='text' size='3' value='< ?php echo $info['listorder'] ?> class="input-text-c">
</td>
换成:
<td width="10%" id="paixu">
<input id="listorder_a" type='text'placeholder="未排序" size='5' value='<?php if ($info['listorder'] != 8388607 ){echo $info['listorder'];} ?/>' class="input-text-c">
<input name='listorders[<?php echo $info['catid'],'-',$info['id']?/>]' type='hidden' size='3' value='< ?php echo $info['listorder'] ?>' id ="listorder">
</td>
4.添加JS控制
在 /html 下一行添加下面的代码:
<script type="text/javascript">
$(function(){
var box = $('table #paixu');
box.each(function(){
var a = $(this).find("#listorder_a");
var b = $(this).find("#listorder");
//alert(a.val());
a.focus(function(){
if(parseInt(a.val()) < 1 || parseInt(a.val()) == "" ){
b.val(8388607);
}else{
b.val(a.val());
}
}
);
a.blur(function(){
if(parseInt(a.val()) < 1 || parseInt(a.val()) == "" ){
b.val(8388607);
}else{
b.val(a.val());
}
}
);
});
});
</script>
5.前台排序设置
order="listorder ASC,id DESC"
- QQ932557101
- emailmail@jiangfei.net
- weibo@疆飞 (@jiangfei1006)
- twitter@疆飞 (@jiangfei1006)
PS:没事不要瞎联系,除非你想请我吃饭...
Copyright © 2008-. JiangFei.net all rights reserved
苏ICP备18062911号