dedecms5.7版本中我们在发表文章的时候可以看见有个权重值,但是很多人用orderby=’weight’调用的时候却不起作用。这是为什么呢?下面给大家讲讲解决方法。
我们在使用dedecms发部文章的时候,经常希望文章可以按我们的需求来进行排序。这个时候就需要用到文章的权重值了,如下图所示:
但是当我们在dede:arclist标签中使用orderby=’weight’来排序时,发现文章显示并没有起作用。我们在include\taglib下找到文件arclist.lib.php 打开来看一下代码。
在代码的第74-75行,我们发现$isweight默认为N,所以我们在使用orderby=’weight’ 时需要在前面加上 isweight=”Y” 来开启权重的使用。也可以加上orderway=’asc’或orderway=’desc’来限定排序的方式是升序还是降序
其实以上文件不需要修改,只是为了说明问题。好的这样改了之后dede:arclist中就可以按权重来排序了。但是我们在栏目列表页使用dede:list还是无法按权限排序。这是因为dede:list标签并为加入按weight排序的方法。我们在include下面找到arc.listview.class.php打开。
打开后我们搜索关键字“排序方式”,找到如下代码段,一般在771行左右。然后加入下图绿框里面的代码。即:
else if($orderby == “weight”) {
$ordersql = ” order by arc.weight $orderWay”;
}
接着我们往下拉找到下面代码段,加了刚才的代码之后大概在812行左右。在lastpost后面加上weight,如下图所示。
好的,现在就可以在dede:list标签中使用权重来排序了,我的调用代码如下图:
大家可根据自己得实际情况来调整各个参数。isweight=’Y’与orderby=’weight’必须保留外,其他看自己情况吧。
到这里,大家是不是觉着已经结束了呢?
但是在我实际测试中发现排序没有任何问题了,完全是按权重来的。但是,权重在后台却无法修改。好吧,这个确实是个大坑。。。。
接下来就是来找为什么不能在后台修改权重值了。
首先找到dede目录下的 album_edit.php 第 172行左右,如下图:
你会发现源代码里面没有关于权重值的更新呢。我们来自己添加上weight=’$weight’ ,如图红框内的内容:
至此,权重排序与后台无法修改权重值的问题全部解决了。去后台测试修改权重值,生成静态页面,完全达到预期目的。
转载请注明:虎哥的SEO日志 » dedecms 文章按权重排序问题