如何实现dede:list和dede:arclist的权重排序功能?

在织梦CMS中,dede:listdede:arclist标签可以通过设置orderby='weight'权重排序

使用 dede:list 和 dede:arclist 按权重排序的方法

在织梦CMS(DedeCMS)中,dede:listdede:arclist标签是用于生成文章列表的常用标签,为了实现更复杂的排序需求,比如按权重对文章进行排序,可以通过修改系统文件来实现,下面详细介绍如何通过修改代码实现这一功能。

dede:list 按权重排序的方法

1、找到并编辑文件

打开织梦CMS系统的根目录,找到includearc.listview.class.php文件,并使用文本编辑器打开。

2、添加权重排序代码

在第727行处,添加以下代码:

“`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";

}

“`

3、修改联合查询部分

在第778行处,找到如下代码:

“`php

// 如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)

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

“`

在上述代码后面添加:

“`php

$ordersql .= " ORDER BY arc.weight $orderWay";

“`

4、标签调用

在模板文件中使用以下标签调用:

“`html

{dede:list orderby=’weight’ orderway=’asc’}

“`

这样,dede:list标签就可以按权重进行排序了,并且在动静态状态下测试均可成功。

二、dede:arclist 按权重排序的方法

1、找到并编辑文件

打开织梦CMS系统的根目录,找到includetaglibarclist.lib.php文件,并使用文本编辑器打开。

2、修改权重判断代码

在第74、75行处,将原来的代码:

“`php

// arclist是否需要weight排序,默认为"N",如果需要排序则设置为"Y"

$isweight = $ctag>GetAtt(‘isweight’);

“`

修改为:

“`php

$weight = $ctag>GetAtt(‘weight’);

“`

3、修改文档排序方式

在第327行处,找到如下代码:

“`php

// 文档排序的方式

如何实现dede:list和dede:arclist的权重排序功能?

$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 $ordersql = " ORDER BY arc.sortrank $orderWay";

“`

在上述代码后面添加:

“`php

else if($orderby == ‘weight’) $ordersql = " order by arc.weight asc"; // 插入这句从小到大

“`

4、标签调用

在模板文件中使用以下标签调用:

“`html

{dede:arclist orderby=’weight’}

“`

dede:arclist标签也可以按权重进行排序了。

表格对比归纳

修改文件 修改位置 修改内容
dede:list includearc.listview.class.php 第727行 增加ORDER BY arc.weight $orderWay 语句
第778行 增加if(preg_match('/weight/', $orderby)) 判断,并在其后添加ORDER BY arc.weight $orderWay 语句
dede:arclist includetaglibarclist.lib.php 第74、75行 $isweight = $ctag>GetAtt('isweight'); 改为$weight = $ctag>GetAtt('weight');
第327行 增加else if($orderby == 'weight') $ordersql = " order by arc.weight asc"; 语句

FAQs

1、问题:如何在DEDECMS中按自定义字段排序?

答案:要在DEDECMS中按自定义字段排序,首先需要在数据库中添加该字段,然后修改相应的PHP文件来支持新的排序字段,如果要按名为NewField的字段排序,可以修改arc.listview.class.php文件,在第560行至562行处添加如下代码:

“`php

else if($orderby=="NewField") {

$ordersql = " order by arc.NewField $orderWay";

}

“`

在第603行处添加:

“`php

if(ereg(‘hot|click|lastpost|NewField’,$orderby))

“`

2、问题:为什么按权重排序后,文章顺序没有变化?

答案:如果在按权重排序后文章顺序没有变化,可能是因为未正确设置权重值,确保在录入文章时手动调整每篇文章的权重值,检查修改后的代码是否正确生效,可以在模板文件中使用{dede:list orderby='weight' orderway='asc'}{dede:arclist orderby='weight'}标签来测试排序效果,如果问题仍未解决,请确认修改的文件路径和代码位置是否准确无误。

“`html

按权重排序的方法

使用dede列表标签按权重排序

在织梦CMS中,使用dede列表标签如dede:list和dede:arclist可以方便地生成列表内容,以下是如何根据权重对列表进行排序的方法:

使用dede:arclist标签

dede:arclist标签是生成文章列表的主要标签,它允许你根据不同的条件进行排序。

<dede:arclist

titlelen="30" row="10" pagesize="10" sort="weight" flag="h" channelid="1" listtype="image" template="list_article.htm"

>

<!列表内容模板 >

</dede:arclist>

使用dede:list标签

dede:list标签用于生成目录或列表,也可以根据权重进行排序。

<dede:list

typeid="1" row="10" pagesize="10" sort="weight" template="list_article.htm"

>

<!列表内容模板 >

</dede:list>

参数说明

  • sort=”weight”: 指定按照权重排序。
  • row: 指定每页显示的行数。
  • pagesize: 指定每页显示的文章数量。
  • typeid: 指定文章类型ID。
  • channelid: 指定频道ID。
  • flag: 指定文章标记,如热点文章。
  • listtype: 指定列表类型,如图片列表。
  • template: 指定模板文件。

“`

代码展示了如何在织梦CMS中使用dede:arclist和dede:list标签根据权重对文章列表进行排序的方法,通过设置`sort=”weight”`参数,可以确保列表按照文章的权重进行排序。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1122736.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-10-02 02:37
下一篇 2024-10-02 02:37

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入