帝国cms中终极栏目文章列表的自定义排序实现方式

目前帝国cms的文章列表页默认是按照发布时间的先后顺序显示,但也有些用户想实现更个性化的显示方式,其实这个在后台即可修改,cms大学在这里和大家分享一下,我们往下看。

帝国cms中终极栏目文章列表的自定义排序实现方式.jpg

如上图,默认的选择方式如红色框内的五个选项,实际上是可以自定义实现其他排序方式,并非只能使用系统默认提供的五个,所在数据表的主表字段均可参与排序,例如:lastdotime(文章最后编辑时间)等,自定义添加的字段也可参与排序,同样可以多个排序参数一起用(truetime desc,lastotime desc),实际情况我们往下看;

折叠PHP 代码
  1. $query="select ".ReturnSqlListF($mid)." from {$dbtbpre}ecms_".$class_r[$classid][tbname]." where ".$yhadd."(".$whereclass.") and checked=1 order by ".ReturnSetTopSql('list').$addorder.$limit;  

上面的代码是/e/class/functions.php中负责终极栏目执行查询的代码,有两个排序条件取得函数ReturnSetTopSql('list')和$addorder;其中ReturnSetTopSql('list')判断的是是否使用置顶排序,ReturnSetTopSql()函数在/e/class/connect.php,相关设置在后台->系统设置->信息设置中;$addorder为以下代码判断获得的,作用是栏目设置中排序方式为空的话就默认用发布时间倒序排序,如果是不为空的话就使用栏目设置中的排序方式显示。

折叠PHP 代码
  1. //排序  
  2. if(emptyempty($class_r[$classid][reorder]))  
  3. {  
  4.     $addorder="newstime desc";  
  5. }  
  6. else  
  7. {  
  8.     $addorder=$class_r[$classid][reorder];  
  9. }  

其他说明:

1.以会员发布的信息置顶为例说明,如果使用默认字段外的其他字段作为置顶字段,可以在栏目设置中添加排序选项,这样不修改核心文件,不影响系统升级。

2.不同模型的排序,复杂模型排序同样可以使用栏目设置的排序方式,实现起来更加自由。

3.不更改文件并且系统参数设置使用置顶排序时,则置顶排序优先级高于栏目设置的排序设置,也就是首先显示置顶文章,而后显示正常排序。

4.必要的时候可以更改ReturnSetTopSql('list')与$addorder前后顺序满足特殊排序需要(其他排序选项高于系统排序情况下)

5.最好的办法就是后台系统设置中不要设置置顶文章参与排序,而是在栏目设置中输入排序字段来实现排序,这样也就实现了不同栏目、不同模型的个性化显示。

cms大学,为帝国cms用户提供动力
Copyright © 2016 CmsDX.com All Rights Reserved.