DEDE CMS排序修改
作者:shao65308 日期:2014-09-10
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' orderway='asc'}
这样{dede:list}标签就支持了按权重排序的调用,并且动静态状态下测试均成功!
++==================================================++
5.6之后DEDE加入了文章按权重排序的功能,但很多童鞋调整权重数值,并在arclist标签里加上orderby='weight',却发现无任何效果,原因是系统默认是不开启该功能的。
坛子里有相关的解决方法,需要改arclist.lib.php,才能使用此功能。
其实完全没有必要,正确的使用方法如下:
{dede:arclist titlelen='38' flag='h' noflag='a' isweight='y' orderby='weight'}
<li><span>[[field:typelink/]]</span><a href="[field:arcurl/]">[field:title/]</a><div class="c2time">[field:pubdate function=MyDate('y-m-d',@me)/]</div></li>
{/dede:arclist}
红色部分就是开启 weight排序,再加上orderby='weight',就OK了
--------------------------------------------------------------------------------
另外很多童鞋使用arclist标签时,想按照权重越大越靠前来排序,则需要小动一下arclist.lib.php文件,方法如下:
打开\include\taglib\arclist.lib.php
大概在572行
$orderWeight = list_sort_by($orderWeight, 'weight', 'asc');
修改为(红色部分)
$orderWeight = list_sort_by($orderWeight, 'weight', 'desc');
就OK了
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' orderway='asc'}
这样{dede:list}标签就支持了按权重排序的调用,并且动静态状态下测试均成功!
++==================================================++
5.6之后DEDE加入了文章按权重排序的功能,但很多童鞋调整权重数值,并在arclist标签里加上orderby='weight',却发现无任何效果,原因是系统默认是不开启该功能的。
坛子里有相关的解决方法,需要改arclist.lib.php,才能使用此功能。
其实完全没有必要,正确的使用方法如下:
{dede:arclist titlelen='38' flag='h' noflag='a' isweight='y' orderby='weight'}
<li><span>[[field:typelink/]]</span><a href="[field:arcurl/]">[field:title/]</a><div class="c2time">[field:pubdate function=MyDate('y-m-d',@me)/]</div></li>
{/dede:arclist}
红色部分就是开启 weight排序,再加上orderby='weight',就OK了
--------------------------------------------------------------------------------
另外很多童鞋使用arclist标签时,想按照权重越大越靠前来排序,则需要小动一下arclist.lib.php文件,方法如下:
打开\include\taglib\arclist.lib.php
大概在572行
$orderWeight = list_sort_by($orderWeight, 'weight', 'asc');
修改为(红色部分)
$orderWeight = list_sort_by($orderWeight, 'weight', 'desc');
就OK了
评论: 0 | 引用: 0 | 查看次数: 6136
发表评论
你没有权限发表评论!