DEDECMS 按权重排序

后端 · 2020-03-03 ·

dede:list

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

2、修改代码:在文件第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行处找到此段代码

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

4、标签调用:

{dede:list orderby='weight'}

这样{dede:list}标签就支持了按权重排序的调用,并且动静态状态下测试均成功!权重越小的在前,越大就越靠后,类似发布新闻一样,最近发布的序号大,就越靠后。

dede: arclist

直接标签调用即可

{dede:arclist isweight="Y" orderby="weight"}

但是这样设置了,并不能达到越小的在前,为了能够使和dede:list一样的效果

1.找到\include\taglib\arclist.lib.php 。

2. 大概在572行

$orderWeight = list_sort_by($orderWeight, 'weight', 'desc');
%