菜单
展开边栏 收起边栏

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" 

 

Copyright © 2008-. JiangFei.net all rights reserved 苏ICP备18062911号