您现在的位置是:首页 > 教程 > dedecms教程dedecms教程

织梦文章列表实现按权重排序的方法

若南2023-10-10 18:31:18dedecms教程已有人查阅

导读DEDECMS(织梦)5.6系统支持文档权重weight排序,可以在模板中使用:其中的orderby=’weight’就实现了文档按照权重排序了。这是arclist标签,可以用在任何位置来调用文档列表

DEDECMS(织梦)5.6系统支持文档权重weight排序,可以在模板中使用:
{dede:arclist row='10' titlelen='50' orderby='weight'} ?[field:textlink/]<br/> {/dede:arclist} 
其中的orderby=’weight’就实现了文档按照权重排序了。这是arclist标签,可以用在任何位置来调用文档列表,然而,在栏目列表页,如果你要使用list标签(实现文档列表分页),也想用权重(weight)排序,
{dede:list pagesize='10' titlelen='50' orderby='weight'} ?[field:textlink/]<br/> {/dede:list}
你会发现,你的列表并没有按照权重(weight)排序,无论你怎么修改,它的顺序就还是老样子!经过多次测试,发现原来dedecms织梦对权 重 weight排序的支持仅arclist标签,并不支持list标签,因此,就开始了对dedecms织梦系统的改造,让它支持list标签权 重 weight排序,改造的文件主要是include目录下的arc.listview.class.php文件,打开文件,查找
else
 if($orderby==”lastpost”) {
语句,大概在726行,在此行前面按下回车健,插入如下语句:
else
 if($orderby=="weight")
 {$ordersql = " order by arc.weight $orderWay"; } 
成为这样:
//排序方式
$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";
}
继续查找:
if(ereg('hot|click|lastpost',$orderby)) 
语句,修改为:
if(ereg('hot|click|weight|lastpost',$orderby)) 
修改完成后,保存,如果目标里面已经使用了weight排序,生成一下,就可以看到,文档列表已经安装weight排序
后记:进行了上面的修改,可以实现按照权重weight排序,但是,如果不在模板中写明orderway=”asc”,无法实现权重越小越靠前,
解决方案1:
{dede:list pagesize='10' orderby='weight' orderway='asc'} ?[field:textlink/]<br/> {/dede:list} 
要实现越重越大越靠前,只需要将上述代码中的“orderway=’asc’”去掉就可以了。
究其深层原因,是arc.listview.class.php文件中,693行:
$imgwidth=120,$imgheight=90,$listtype="all",$orderby="default",$innertext="",$tablewidth="100",$ismake=1,$orderWay='desc') 
默认排序方式是降序排列,而非升序,考虑其它常用排序,如puddate等,此处不要修改的好。

本文标签:

很赞哦! ()

留言与评论 (共有 条评论)
验证码:

本栏推荐

相关标签