首页 > 建站/维护 > 如何实现Dede {dede:list}按文章列表按权重weight排序
2016
03-02

如何实现Dede {dede:list}按文章列表按权重weight排序


织梦DEDE cms中,在文章的编辑里头有个权重的选项,说明里写着是“越小越靠前”,随时这么说了,但是你真按照他的说明设置,还真不行,dede程序底层代码好像压根没把这功能加进去,要实现还是要在底层代码里加几行代码。实现方法如下:

Dede {dede:list}按文章列表按权重weight

1、找到根目录include/arc.listview.class.php文件。

2、修改代码:

在文件第727行(不一定在727行,反正就在那附近)处添加按weight排序判断代码(红色部分为新添加代码)。

//排序方式
$ordersql = ”;
if($orderby==”senddate” || $orderby==”id”) {
$ordersql=” ORDER BY arc.id $orderWay”;
}
else if($orderby==”hot” || $orderby==”click”) {
$ordersql = ” ORDER BY arc.click $orderWay”;
}
else if($orderby==”lastpost”) {
$ordersql = “  ORDER BY arc.lastpost $orderWay”;
}
 else if($orderby==”weight”) {
             $ordersql = “  ORDER BY arc.weight $orderWay”;
         }
else {
$ordersql=” ORDER BY arc.sortrank $orderWay”;
} 

3、再在第778行(不一定在778行,反正就在那附近)处找到此段代码

//如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)
if(preg_match(‘/hot|click|lastpost|weight/’, $orderby))

4、标签调用:

{dede:list orderby=’weight’ orderway=’asc’}   //这个是按权重越小排名越靠前,如果想按权重越大排名越靠前则把“asc”改为“desc”。

5、完成


相关的属性

orderby='sortrank' 文档排序方式

orderby='hot'  orderby='click' 表示按点击数排列

orderby='sortrank'  orderby='pubdate' 按出版时间排列

orderby='near'

orderby=='lastpost' 按最后评论时间

orderby=='scores' 按得分排序

orderby='id' 按文章ID排序

orderby='rand' 随机获得指定条件的文档列表

orderby='scores' 按评论来排序 官方没有写的

倒序 orderway='asc'

orderway是设置排序的方式,值为descasc


相关文章:如何修改dede field name=position当期位置的最后一个">"符号