dede arclist排序如何实现自定义规则?

99ANYc3cd6
预计阅读时长 19 分钟
位置: 首页 DEDE建站 正文

arclist 是 DedeCMS 中最核心、最常用的列表标签,用于在首页、列表页等地方调用文章,灵活运用其排序功能,可以满足各种展示需求。

dede arclist排序
(图片来源网络,侵删)

核心属性:orderbyorderway

排序主要由两个属性控制:

  1. orderby:指定 按什么字段 进行排序。
  2. orderway:指定 排序的方向(升序或降序)。

orderby 属性详解 (按什么排)

orderby 的值决定了排序的依据,以下是最常用和最重要的几种排序方式:

按发布时间排序 (最常用)

这是默认的排序方式。

  • : pubdate
  • 说明: 按文章的发布时间排序。
  • 示例:
    {dede:arclist orderby='pubdate' titlelen='30'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
    {/dede:arclist}

按文章ID排序

  • : id
  • 说明: 按文章在数据库中的唯一ID排序,ID通常是递增的,所以按ID降序排列就等同于获取最新发布的文章。
  • 示例:
    {dede:arclist orderby='id' orderway='desc' titlelen='30'}
    ...
    {/dede:arclist}

按点击量排序 (热门文章)

  • : click
  • 说明: 按文章的点击次数(浏览量)排序,常用于制作“热门文章”板块。
  • 示例:
    {dede:arclist orderby='click' orderway='desc' titlelen='30' limit='0,10'}
    ...
    {/dede:arclist}

按文章权重排序 (推荐文章)

  • : weight
  • 说明: 按后台设置的“文章权重”值进行排序,权重值越高,排序越靠前,这是实现“置顶”和“推荐”功能的关键。
  • 示例:
    {dede:arclist orderby='weight' orderway='desc' titlelen='30'}
    ...
    {/dede:arclist}

按评论数排序

  • : scores
  • 说明: 按文章的评论数量排序。
  • 示例:
    {dede:arclist orderby='scores' orderway='desc' titlelen='30'}
    ...
    {/dede:arclist}

按随机顺序排序

  • : rand
  • 说明: 随机获取文章,每次刷新页面文章的顺序都会改变,常用于制作“随机推荐”。
  • 示例:
    {dede:arclist orderby='rand' titlelen='30' limit='0,5'}
    ...
    {/dede:arclist}

排序

  • : title
  • 说明: 按文章标题的拼音或首字母顺序进行排序。
  • 示例:
    {dede:arclist orderby='title' titlelen='30'}
    ...
    {/dede:arclist}

按更新时间排序

  • : sortup
  • 说明: 按文章的最后更新时间排序,如果你在后台编辑了已发布的文章,这个时间会改变。
  • 示例:
    {dede:arclist orderby='sortup' orderway='desc' titlelen='30'}
    ...
    {/dede:arclist}

orderway 属性详解 (怎么排)

orderway 只有两个值,用来配合 orderby 使用:

dede arclist排序
(图片来源网络,侵删)
  • desc: 降序 (Descending),从大到小,从新到旧,从高到低。
    • orderby='pubdate' orderway='desc' -> 按发布时间,最新的在前。
    • orderby='click' orderway='desc' -> 按点击量,点击最多的在前。
    • orderby='weight' orderway='desc' -> 按权重,权重最高的在前。
  • asc: 升序 (Ascending),从小到大,从旧到新,从低到高。
    • orderby='pubdate' orderway='asc' -> 按发布时间,最旧的在前。
    • orderby='title' orderway='asc' -> 按标题,A-Z在前。

综合应用示例

示例1:首页调用最新文章 (默认)

这是最常见的情况,按发布时间倒序,显示10条。

<h3>最新文章</h3>
<ul>
    {dede:arclist typeid='' titlelen='30' row='10'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">[field:title function='cn_substr(@me,30)'/]</a>
        <span>[field:pubdate function="MyDate('m-d',@me)"/]</span>
    </li>
    {/dede:arclist}
</ul>
  • typeid='':调用所有栏目的文章,如果指定 typeid='1,2',则只调用栏目ID为1和2的文章。
  • row='10':调用10条记录,len='30'`:标题长度限制为30个字符。

示例2:调用“热门文章”板块

按点击量倒序,显示前5条。

<h3>热门文章</h3>
<ol>
    {dede:arclist orderby='click' orderway='desc' row='5'}
    <li><a href="[field:arcurl/]">[field:title/]</a></li>
    {/dede:arclist}
</ol>

示例3:调用“推荐文章”板块

按权重倒序,显示前8条。

<h3>编辑推荐</h3>
<div>
    {dede:arclist orderby='weight' orderway='desc' row='8'}
    <a href="[field:arcurl/]" title="[field:title/]">[field:image/]<span>[field:title/]</span></a>
    {/dede:arclist}
</div>

示例4:多条件排序 (重要)

DedeCMS 的 orderby 支持多字段组合排序,用逗号隔开。排序的优先级从左到右

我们想实现这样的效果:

  1. 首先,按 weight (权重) 降序排列,让推荐的文章排在最前面。
  2. 然后,对于权重相同的文章,再按 pubdate (发布时间) 降序排列,让新发布的排在前面。
<h3>综合推荐</h3>
<ul>
    {dede:arclist 
        orderby='weight desc, pubdate desc' 
        row='10'
        titlelen='30'
    }
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <small>权重:[field:weight/] | 时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</small>
    </li>
    {/dede:arclist}
</ul>

注意:在组合排序时,最好在每个字段后面都明确指定 descasc,这样逻辑最清晰,避免因默认值导致意外结果。


常见问题与注意事项

  1. 性能问题

    • orderby='rand' (随机排序) 在数据量大的情况下会有明显的性能问题,因为它会使数据库无法使用索引,如果数据量很大,不建议使用。
    • orderby='click'orderby='scores' 等非索引字段,在大数据量时也可能稍慢。
  2. 字段不存在

    • orderby 的值写错了(比如写成了 orderb='pubdate'),标签会不显示任何内容,且后台可能不会报错,请仔细检查拼写。
  3. flag 属性结合

    • flag 属性用于调用具有特定标记的文章,如 'c' (推荐), 'h' (头条), 'p' (图片) 等。
    • orderbyflag 可以同时使用,先筛选出符合条件的文章,再进行排序。
    • 示例: 调用所有推荐文章,并按点击量排序。
      {dede:arclist flag='c' orderby='click' orderway='desc'}
      ...
      {/dede:arclist}

总结表

orderby 排序依据 常用场景 建议搭配 orderway
pubdate 发布时间 最新文章、资讯列表 desc (最新优先)
id 文章ID 最新文章 (等同于pubdate desc) desc (ID越大越新)
click 点击量 热门文章、排行榜 desc (点击最多优先)
weight 文章权重 推荐文章、置顶文章 desc (权重最高优先)
rand 随机 随机推荐、增加趣味性 - (无需orderway)
sortup 更新时间 最新动态、编辑推荐 desc (最新更新优先)
scores 评论数 热门评论、互动排行 desc (评论最多优先)

希望这份详细的指南能帮助你完全掌握 DedeCMS arclist 的排序功能!

-- 展开阅读全文 --
头像
织梦cms分页显示条数
« 上一篇 02-03
使用织梦css缓存严重
下一篇 » 02-03

相关文章

取消
微信二维码
支付宝二维码

目录[+]