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

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

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

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

要解决织梦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>rn”;

?>

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

<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文件,方法如下:
打开includetaglibarclist.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排序可以忽略了。

wordpress教程

php wordpress乱码怎么办

2022-6-13 21:38:06

dedecms建站

织梦cms系统网站怎么制作html地图_织梦dedecms,织梦dedecms

2022-11-22 21:01:14

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索