在dedecms5.7中,文章和商品默认是按照更新顺序排序,如果你想按照权重排序的话,默认是无法实现的,需要修改一下代码。 但是,你想实现的效果,总可以通过其他不修改代码的方式实现。比如说你想让某几篇文章或者商品置顶并按照一定的顺序排序,你可以通过置顶的方式实现。 1、在文件活产品编辑页面点击高级参数,有个文档排序,然后选择置顶时间,就可以将你需要的文章或者商品置顶排在最上面。 2、文章或产品显示顺序。dede中默认排序是按照修改时间最新排在最上面,按照这个思路,只需要把你想排序的文章按照倒叙点开编辑,保存一下即可。比如1、2、3排序,先编辑保存3然后在2、1。 即可达到置顶和按照一定顺序排列的需求,如果你执着于权重排序,请继续往下看。 首先要记住权重排序的标签是:orderby=‘weight’ 1、{dede:arclist} 修改方法:DEDE 5.7 首页【arclist】增加按权重排序 在织梦系统中找到以下目录\include\taglib中的arclist.lib.php文件并打开; 大约在170行找到 [代码]php代码:$innertext='', $arcid=0, $idlist='', $channelid=0, $limit='', $att='', $order='desc', $subday=0, $noflag='',$tagid='', $pagesize=0, $isweight='N') 把这里的$isweight='N'改为$isweight='Y' 大约在340行上面找到 [代码]php代码://文档排序的方式 $ordersql = ''; if($orderby=='hot' || $orderby=='click') $ordersql = " ORDER BY arc.click $orderWay"; else if($orderby == 'sortrank' || $orderby=='pubdate') $ordersql = " ORDER BY arc.sortrank $orderWay"; else if($orderby == 'id') $ordersql = " ORDER BY arc.id $orderWay"; else if($orderby == 'near') $ordersql = " ORDER BY ABS(arc.id - ".$arcid.")"; else if($orderby == 'lastpost') $ordersql = " ORDER BY arc.lastpost $orderWay"; else if($orderby == 'scores') $ordersql = " ORDER BY arc.scores $orderWay"; //功能:增加按好评数和差评数调用 else if($orderby == 'goodpost') $ordersql = " order by arc.goodpost $orderWay"; else if($orderby == 'badpost') $ordersql = " order by arc.badpost $orderWay"; else if($orderby == 'rand') $ordersql = " ORDER BY rand()"; else $ordersql = " ORDER BY arc.sortrank $orderWay"; 改为 [代码]php代码://文档排序的方式 $ordersql = ''; if($orderby=='hot' || $orderby=='click') $ordersql = " ORDER BY arc.click $orderWay"; else if($orderby == 'sortrank' || $orderby=='pubdate') $ordersql = " ORDER BY arc.sortrank $orderWay"; else if($orderby == 'id') $ordersql = " ORDER BY arc.id $orderWay"; else if($orderby == 'near') $ordersql = " ORDER BY ABS(arc.id - ".$arcid.")"; else if($orderby == 'lastpost') $ordersql = " ORDER BY arc.lastpost $orderWay"; else if($orderby == 'scores') $ordersql = " ORDER BY arc.scores $orderWay"; else if($orderby == 'rand') $ordersql = " ORDER BY rand()"; else if($orderby == 'weight') $ordersql = " order by arc.weight asc";//如果没有特定设置排序则按照权重先排序 else $ordersql = " ORDER BY arc.sortrank $orderWay"; 然后我们就可以在首页使用orderby='weight’进行排序了 列表页使用orderby='weight’ 2、{dede:list} 标签方法:如果列表页(即list标签)也想使用该种排序,还需要修改arc.listview.class.php文件,该文件在include目录下: 第一步:先找到: [代码]php代码://排序方式 $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 { $ordersql=" ORDER BY arc.sortrank $orderWay"; } 改为 [代码]php代码://排序方式 $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(preg_match('/hot|click|lastpost/', $orderby))”,位置大概在812行,在该句的lastpost后加上“|weight”,即“if(preg_match('/hot|click|lastpost|weight/', $orderby))”,到此arc.listview.class.php文件就修改完了 如何倒序 列表页因为有第一篇文章显示在最后一位的特性,所以我们可能会使用倒序排列才能让想要显示的文章在最前面,那么标签应该这样写“{dede:list orderby='weight' orderway='asc'}” |