dede:list标签如何调用指定栏目文章?

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

list 标签的基本语法

list 标签的基本结构如下:

dedecms dede list
(图片来源网络,侵删)
{dede:list pagesize='10'}
    <li>
        <a href='[field:arcurl/]'>[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
{/dede:list}
  • {dede:list ...}: 这是循环的开始,可以包含各种属性来控制列表的行为。
  • 循环体内的代码,会为每篇文章重复执行。
  • {/dede:list}: 这是循环的结束。

list 标签的常用属性

list 标签的功能非常强大,主要通过其属性来实现。

pagesize

  • 作用: 设置每页显示的文章数量。
  • 示例: pagesize='20' 表示每页显示20篇文章。
  • 说明: 这个属性与分页标签 {dede:pagelist/} 紧密配合,是实现分页功能的基础。

col

  • 作用: 设置列表每行显示的列数(主要用于表格布局或 dl/dt 布局)。
  • 示例: col='2' 表示每行显示2列。
  • 说明: 当使用 col 属性时,Dede 会自动在循环体内生成一个带有 dede:listdede:pagebreak 的结构,用于控制换行,在现代前端开发中,更推荐使用 CSS 的 Flexbox 或 Grid 布局来实现多列,而不是依赖此属性。

titlelen

  • 作用: 设置文章标题的显示长度(字符数)。
  • 示例: titlelen='30' 表示标题最多显示30个字符,超出部分会被截断。
  • 说明: 如果标题被截断,Dede 默认会添加 ,你也可以使用自定义函数来控制截断后的显示效果。

infolen

  • 作用: 设置文章摘要(description)的显示长度。
  • 示例: infolen='100' 表示摘要最多显示100个字符。
  • 说明: 这个字段依赖于文章在后台填写时是否填写了摘要,如果未填写,则可能为空。

orderway

  • 作用: 设置文章的排序方式。
  • 可选值:
    • desc: 降序(默认,如按发布时间从新到旧)。
    • asc: 升序(如按发布时间从旧到新)。
  • 示例: orderway='asc'

orderby

  • 作用: 设置文章排序的字段。
  • 常用值:
    • sortrank: 按自定义排序(后台设置,默认值)。
    • pubdate: 按发布时间排序。
    • senddate: 按录入时间排序。
    • hotclick: 按点击量排序。
    • lastpost: 按最后评论时间排序。
    • scores: 按评分排序。
  • 示例: orderby='click' orderway='desc' 表示按点击量从高到低排序。

channel

  • 作用: 指定列表显示的频道ID。
  • 示例: channel='1' 表示只显示内容模型ID为1(文章模型)的内容。
  • 说明: 在多站点或复杂模型网站中非常有用。

typeid

  • 作用: 指定列表显示的栏目ID。
  • 示例: typeid='5' 表示只显示栏目ID为5下的文章。
  • 说明: 在列表页模板(list_*.htm)中,通常不需要手动设置此属性,Dede 会自动获取当前栏目ID,但在特定场景下(如调用其他栏目列表),可以手动指定。

subday

  • 作用: 只显示指定天数内发布的文章。
  • 示例: subday='7' 表示只显示最近7天内发布的文章。
  • 说明: 常用于制作“最新文章”或“本周热点”等模块。

keyword

  • 作用: 只显示标题包含指定关键词的文章。
  • 示例: keyword='织梦,DedeCMS'
  • 说明: 多个关键词用逗号隔开,表示“或”的关系。

list 标签中的常用字段(Field)

{dede:list} 循环体内,可以使用 [field:字段名/] 来调用文章的各种信息。

| 字段名 | 说明 | 示例 | | :--- | :--- | :--- | | 文章标题 | [field:title/] | | arcurl | 文章的完整链接 | [field:arcurl/] | | litpic | 文章的缩略图(如果有) | <img src='[field:litpic/]' /> | | description | | [field:description/] | | pubdate | 文章发布的时间戳(Unix时间戳) | [field:pubdate/] | | click | 文章的点击量 | [field:click/] | | id | 文章的ID | [field:id/] | | typeurl | 当前栏目的链接 | [field:typeurl/] | | typename | 当前栏目的名称 | [field:typename/] |

字段格式化处理(使用 function

很多字段(尤其是日期)需要格式化处理,这时可以使用 function 属性。

dedecms dede list
(图片来源网络,侵删)

日期格式化:

[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]
  • MyDate: Dede 的日期处理函数。
  • 'Y-m-d H:i': 目标格式,Y代表4位年份,m代表月份,d代表日,H代表24小时制小时,i代表分钟。
  • @me: 代表当前字段的原始值(这里是时间戳)。 截断**:
    [field:title function='cn_substr(@me, 30)'/]
  • cn_substr: Dede 的中文字符串截断函数,可以正确处理中文字符,避免乱码。
  • 30: 截取30个字符。

调用缩略图,如果没图则显示默认图:

<img src="[field:litpic/]" onerror="this.src='/images/default.jpg'" />
  • onerror: 这是一段JavaScript,当图片加载失败时,会自动替换为默认图片路径。

list 标签与分页标签的结合使用

一个完整的列表页,必然包含 list 标签和分页标签。

列表页模板 (list_article.htm) 示例:

dedecms dede list
(图片来源网络,侵删)
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
</head>
<body>
    <h1>{dede:field.title/}</h1>
    <ul class="article-list">
        {dede:list pagesize='10' orderby='pubdate' orderway='desc'}
        <li>
            <a href="[field:arcurl/]" title="[field:title/]">[field:title function='cn_substr(@me, 40)'/]</a>
            <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
            <div class="summary">[field:description function='cn_substr(@me, 150)'/]...</div>
        </li>
        {/dede:list}
    </ul>
    <!-- 分页条 -->
    <div class="page">
        <ul>
            {dede:pagelist listsize='5' listitem='pre,next,pageno'}
            </ul>
    </div>
</body>
</html>
  • {dede:pagelist/}: 负责生成分页链接。
    • listsize='5': 显示5个页码按钮。
    • listitem='pre,next,pageno': 指定显示的分页项目,包括“上一页”、“下一页”和页码。

高级用法与注意事项

自定义列表查询

orderbytypeid 等属性无法满足复杂的查询需求,可以使用 sql 属性直接执行 SQL 语句。

示例: 调用指定分类下、标题包含“教程”且点击量大于100的文章。

{dede:list sql="SELECT * FROM `dede_archives` WHERE typeid IN (5,6,7) AND title LIKE '%教程%' AND click > 100 ORDER BY pubdate DESC" pagesize='15'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
    </li>
{/dede:list}

⚠️ 警告: 直接使用 sql 有一定的安全风险,请务必对用户输入进行过滤,并确保你的 dede_archives 表结构是正确的,新手不建议轻易使用。

arclist 标签的区别

  • list: 用于列表页,自带分页功能,必须与 {dede:pagelist/} 配合使用,它基于当前栏目ID进行查询。
  • arclist: 用于任意页面(首页、栏目页等)调用文章列表,本身不带分页功能,功能更灵活,常用于首页推荐、热门文章等。

缓存问题

Dede 是一个基于缓存的系统,如果你修改了列表页模板,但前台页面没有更新,请记得在后台“生成” -> “更新HTML” -> “更新栏目HTML” 或 “更新指定栏目HTML”。

dede:list 是 Dedecms 列表页的基石,掌握它的属性(控制排序、数量、筛选等)和字段(调用文章内容),并结合分页标签,就能构建出功能完善的列表页面,对于初学者,建议先从 pagesize, orderby, titlelen 等常用属性入手,逐步熟悉后再探索更高级的用法。

-- 展开阅读全文 --
头像
织梦CMS后台登录验证码不显示怎么办?
« 上一篇 2025-12-19
C++与Windows编程语言有何区别与联系?
下一篇 » 2025-12-19

相关文章

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

目录[+]