当前位置:首页 > 帝国CMS学习

帝国CMS不为人知的技巧 - 终极栏目自定义排序项

作者:TryLife | 时间:2014-12-05 | 栏目:帝国CMS学习 | 围观热度:1278

一、概述

如上图,默认的选择方式如绿色框圈出有5个选项,实际上是可以自定义新的排序方式,不限制在系统给定的5个,而是主表字段均可参与排序,例如:turetime(真实发布时间的UNIX时间戳),lastdotime(信息修改时间UNIX时间戳)所有主表字段包括自定义字段在内,同样可以多个排序参数一起用(truetime desc,lastdotime desc),实际情况我们我们先看代码;

二、探索

$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为以下代码判断获得的,大致意思是栏目设置中排序方式为空的话就默认用发布时间倒序排序,如果是不为空的话呢就使用栏目设置的排序;

//排序
if(empty($class_r[$classid][reorder]))
{
	$addorder="newstime desc";
}
else
{
	$addorder=$class_r[$classid][reorder];
}

三、总结

1.以会员信息置顶为例如果使用外置字段作为置顶字段,可以在栏目设置中添加排序选项,这样减少了修改系统文件

2.不同模型排序,复杂模型排序同样可以使用栏目设置的排序选项,方便;

3.不更改文件并且系统参数设置使用制定排序则置顶排序永远高于栏目设置的排序设置

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

5.最好的办法就是后台系统设置不设置置顶项参与排序,而在栏目设置中自己定义排序字段