解决织梦dedecms文章列表按权重排序问题

织梦cms系统文章列表排序问题一直是织梦CMS系统的一个BUG,要解决这个问题,织梦CMS系统的权重排序就是一个很好的选择,下面大兵来教教大家织梦cms文章列表如何实现权重排序.

织梦cms系统文章列表排序问题一直是织梦CMS系统的一个BUG,织梦cms文章列表不能按照自己希望的排序方式进行排序,是按照发布时间的先后进行排序,这个排序方式有一个问题就是只要文章更新了就被认为了是新发布的内容,结果就导致文章列表排序乱了。
要解决这个问题,织梦CMS系统的权重排序就是一个很好的选择,下面大兵来教教大家织梦cms文章列表如何实现权重排序。

织梦文章列表按权重排序

织梦列表文章列表按权重排序

要解决织梦cms系统文章列表权重排序问题,主要修改下面几个文件就行了:

/include/arc.freelist.class.php 自由列表对应的文件
/dede/templets/freelist_edit.htm 新增自由列表对应的文件
/dede/templets/freelist_add.htm 修改自由列表对应的文件
/include/arc.listview.class.php list列表对应的文件
/include/taglib/arclist.lib.php arclist列表对应的文件

其实修改步骤方法非常简单,按照大兵以下步骤方法即可修正织梦cms系统文章列表排序问题:
1、打开/include/arc.freelist.class.php, 找到以下代码:

else if($orderby==”rand”)
{
$ordersql = ” ORDER BY rand()”;
}

在代码下方插入以下代码后保存:

else if($orderby==”weight”)
{
$ordersql = ” order by arc.weight asc”;
}

2、打开/dede/templets/freelist_add.htm,找到以下代码:

<td height=”28″ align=”left”>排列顺序:
<select name=”orderby” id=”orderby” style=”width:120″>

在代码下方插入以下代码,保存:
<option value=”weight”>权重值</option>

3、打开/dede/templets/freelist_edit.htm,找到以下代码:

<?php

echo “<option value=\”$orderby\” selected>{$sortarrs[$orderby]}</option>\r\n”;

?>

在代码下方插入以下代码,保存:

<option value=”weight” >权重值</opiton>

4、打开/include/arc.listview.class.php,找到以下代码:

else if($orderby==”lastpost”)

{

$ordersql =”ORDER BY arc.lastpost $orderWay”;

}

在代码下方插入以下代码:

else if($orderby==”weight”)
{

$ordersql = ” order by arc.weight asc”;
}

找到以下代码:

if(preg_match(‘/hot|click|lastpost|/’, $orderby))

替换为以下代码并保存:
if(preg_match(‘/hot|click|lastpost|weight/’, $orderby))

5、打开/include/taglib/arclist.lib.php,找到以下说明文字:

//功能:增加按好评数和差评数调用
替换为以下代码并保存:
else if($orderby == ‘weight’) $ordersql = ” ORDER BY arc.weight asc”;
//功能:增加按好评数和差评数调用
修改了以下个文件,即可以解决织梦cms系统文章列表权重排序问题(根据权重从小到大排列),并且使用其它的自由列表也可以选择权重排序方式进行排列。

织梦cms系统文章列表权重排序调用例子:

{dede:arclist flag=’a’ limit=’0,1′ typeid=’10’ isweight=’y’ orderby=’weight’}
<a href=”” target=”_blank”>
<img src=”[field:picname/]” width=”300″ height=”168″ alt=”[field:shorttitle/]” style=”border:1px solid “>
</a>
{/dede:arclist}

arclist标签调用的内容按照权重排序

另外很多童鞋使用arclist标签时,想按照权重越大越靠前来排序,则需要小动一下arclist.lib.php文件,方法如下:
打开\include\taglib\arclist.lib.php
大概在572行

$orderWeight = list_sort_by($orderWeight, ‘weight’, ‘asc’);

修改为(红色部分)

$orderWeight = list_sort_by($orderWeight, ‘weight’, $order); //或直接写成desc,但就不能在标签里改排序方式了

就OK了

完整的表达方法如下

{dede:arclist row=1 titlelen=’80’ isweight=’y’ orderby=’weight’ orderway=’desc’ } <!–或者 orderway=’asc’—>
{/dede:arclist}

以上方法是 先按其他的排序方式取出来数据之后 再根据 weight 排序的。
要直接按weight 排序
可以在大概336行
else if($orderby == ‘scores’) $ordersql = ” ORDER BY arc.scores $orderWay”;
下加一句
else if($orderby == ‘weight’) $ordersql = ” ORDER BY arc.weight $orderWay”;
// lyy20160226这里增加weight排序,是先按weight排序取数据,后面的先按sonrtrank等其他排序方式 再按weight排序可以忽略了。

本篇文章发布于大兵SEO博客,为大兵原创内容,如若转载,请注明出处:https://www.zhuzhouren.cn/jianzhanjiaocheng/dedecms/33.html,否则,禁止转载,谢谢配合!

(2)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021-03-18 22:13
下一篇 2020-09-08 22:01

其他人还看过以下内容

发表回复

登录后才能评论
联系我

平时工作忙:合作还是咨询SEO服务,请简明扼表明来意!谢谢!

在线咨询:点击这里给我发消息

邮件:dabingseo@qq.com
工作时间:周一至周六,10:30-24:30,节假日休息

个人微信
个人微信
分享本页
返回顶部