织梦dede list标签如何灵活调用数据?

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

{dede:list} 是什么?

{dede:list} 是一个循环标签,它的作用是:

织梦 dede list 详解
(图片来源网络,侵删)
  1. 从数据库中查询出指定条件的内容列表。
  2. 对列表中的每一条内容,执行一次 {/dede:list} 之间的代码块。
  3. 最终将所有内容拼接成一个完整的HTML列表,展示在页面上。

你可以把它想象成一个 foreach 循环,它遍历的是你的文章列表。


基本语法和结构

{dede:list} 的基本结构如下:

{dede:list pagesize='10' titlelen='40'}
    <!-- 这里是循环体内的代码,对每一条记录执行 -->
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
{/dede:list}
  • {dede:list ...}:循环开始标签,可以带属性来控制查询和输出。
  • [field:xxx/]:这是字段标签,用于在循环体内获取当前这条记录的某个字段值,比如标题、链接、发布时间等。
  • {/dede:list}:循环结束标签。

核心属性详解

{dede:list} 的强大之处在于其丰富的属性,这些属性让你可以灵活地控制列表的生成。

pagesize

  • 作用:设置每页显示的文章数量。
  • 示例{dede:list pagesize='20'}
  • 说明:这是分页功能的关键。{dede:page/} 标签会根据 pagesize 的值来计算总页数和生成上一页/下一页/页码等链接。

titlelen

  • 作用:截取文章标题的长度(单位:汉字/英文字符)。
  • 示例{dede:list titlelen='30'}
  • 使用:在循环体内使用 [field:title/] 时,如果标题过长,可以通过此属性限制显示字数,避免页面布局错乱,如果设置了 titlelen[field:title/] 输出的就是截断后的标题。

infolen

  • 作用:截取文章简介(的长度(单位:汉字/英文字符)。
  • 示例{dede:list infolen='200'}
  • 使用:在循环体内使用 [field:info/] 时,可以控制显示的简介长度,这对于制作文章摘要列表非常有用。

orderby

  • 作用:指定文章的排序方式。
  • 可选值
    • sortrank (默认): 按文章排序级别(后台设置的“置顶”、“推荐”等)排序。
    • pubdate: 按发布时间降序(最新的在前)。
    • senddate: 按录入时间降序。
    • hotclick: 按点击量降序(热门文章)。
    • lastpost: 按最后评论时间排序。
    • scores: 按得分排序。
    • id: 按文章ID排序。
  • 示例{dede:list orderby='pubdate'}

orderway

  • 作用:指定排序的方向(升序或降序)。
  • 可选值
    • desc (默认): 降序(从大到小,时间上是从新到旧)。
    • asc: 升序(从小到大,时间上是从旧到新)。
  • 示例{dede:list orderby='click' orderway='asc'} (按点击量从低到高排序)

channel

  • 作用:指定要查询的模型ID。
  • 示例{dede:list channel='1'} (查询文章模型ID为1的内容)
  • 说明:如果你的列表页需要显示不同模型的内容,这个属性就很有用,默认情况下,{dede:list} 只查询当前栏目所属模型的内容。

offset

  • 作用:从第几条记录开始查询(偏移量)。
  • 示例{dede:list offset='5' pagesize='10'] (从第6条记录开始,显示10条)
  • 说明:可以实现“跳过前N篇文章”的效果,常用于首页或特殊列表页。

idlist

  • 作用:直接指定要输出的文章ID列表,用逗号隔开。
  • 示例{dede:list idlist='1,5,8,12'}
  • 说明:当需要输出一些指定的、不连续的文章时使用,一旦设置了 idlistorderbypagesize 等排序和分页属性将失效。

常用字段标签详解

{dede:list} 循环体内,使用 [field:xxx/] 来调用当前文章的各个字段。

织梦 dede list 详解
(图片来源网络,侵删)
字段标签 说明 常用示例
[field:id/] 文章的唯一ID 通常不直接显示,用于JS交互或构建其他链接。
[field:title/] <a href="[field:arcurl/]">[field:title/]</a>
[field:arcurl/] 文章的完整URL链接 <a href="[field:arcurl/]">阅读全文</a>
[field:shorttitle/] 过长时作为备用。
[field:pubdate/] 文章发布时间(时间戳格式) [field:pubdate function="MyDate('Y-m-d',@me)"]
[field:senddate/] 文章录入时间(时间戳格式) [field:senddate function="MyDate('Y-m-d H:i:s',@me)"]
[field:litpic/] 文章的缩略图URL <img src="[field:litpic/]" alt="[field:title/]">
[field:info/] 文章简介( [field:info/] (如果后台没填,则为空)
[field:description/] 文章SEO描述 通常用于 <meta name="description" content="[field:description/]">
[field:click/] 文章点击数 <span>浏览:[field.click/]次</span>
[field:writer/] 文章作者 <span>作者:[field.writer/]</span>
[field:source/] 文章来源 <span>来源:[field.source/]</span>
[field:typeid/] 文章所属栏目的ID 通常用于JS交互。
[field:typename/] 文章所属栏目的名称 <span>[field:typename/]</span>
[field:keywords/] 文章关键词 <span>标签:[field:keywords/]</span>

特别说明:时间格式化 [field:pubdate/] 输出的是一个Unix时间戳(如:1633027200),无法直接使用,必须配合 function 属性来格式化。

语法[field:字段名 function="函数名('格式',@me)"]

常用格式化函数:

  • MyDate: DedeCMS内置的日期格式化函数。
    • MyDate('Y-m-d', @me) -> 2025-09-30
    • MyDate('Y-m-d H:i:s', @me) -> 2025-09-30 10:00:00
    • MyDate('Y年m月d日', @me) -> 2025年09月30日
  • cn_substr: 字符串截断函数,防止乱码。
    • [field:title function="cn_substr(@me, 30)"] -> 截取标题前30个字符。

完整示例

假设我们要制作一个标准的文章列表页,包含标题、缩略图、发布时间和阅读次数。

织梦 dede list 详解
(图片来源网络,侵删)

模板代码 (list_article.htm)

{dede:include filename="head.htm"/} <!-- 引入头部 -->
<div class="main">
    <div class="list">
        <h2 class="title">[field:typename/]</h2> <!-- 显示当前栏目名称 -->
        <!-- 使用 dede:list 循环输出文章列表 -->
        {dede:list pagesize='15' titlelen='40' orderby='pubdate' orderway='desc'}
        <div class="list-item">
            <div class="pic">
                <a href="[field:arcurl/]">
                    <img src="[field:litpic/]" alt="[field:title/]" />
                </a>
            </div>
            <div class="text">
                <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
                <p class="intro">[field:info/]</p>
                <div class="info">
                    <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"]</span>
                    <span class="click">浏览:[field.click/]次</span>
                </div>
            </div>
            <div class="clear"></div>
        </div>
        {/dede:list}
        <!-- 分页条 -->
        <div class="page-nav">
            {dede:page/}
        </div>
    </div>
</div>
{dede:include filename="footer.htm"/} <!-- 引入底部 -->

{dede:arclist} 的区别

新手常常混淆 {dede:list}{dede:arclist},它们的主要区别在于使用场景:

特性 {dede:list} {dede:arclist}
核心用途 列表页 的核心标签,与 {dede:page/ 配合实现分页。 通用列表标签,常用于首页、栏目首页、内容页调用其他文章。
分页支持 原生支持分页,通过 pagesize{dede:page/ 轻松实现。 不支持分页,如果要实现分页,需要结合其他复杂方法或自定义标签。
性能 在列表页中,性能更优,因为它直接为列表页场景设计。 在非列表页(如首页)调用少量数据时性能良好,但调用大量数据时可能不如 list
灵活性 相对固定,主要用于内容模型的列表展示。 非常灵活,可以跨栏目、按特定条件(如 flag、typeid)调用文章,适合各种复杂场景。

简单总结:

  • 做文章列表页、产品列表页等需要分页的列表时,用 {dede:list}
  • 在首页、内容页等地方,调用一些推荐文章、热门文章、相关文章等不需要分页的列表时,用 {dede:arclist}

常见问题与技巧

  1. Q: 为什么 [field:info/] 没有内容? A: 因为 [field:info/] 调用的是文章的“字段,在后台发布文章时,必须在“编辑框中填写内容,它不会自动从文章正文中截取。

  2. Q: 如何实现“带图”和“无图”两种不同的列表样式? A: 可以使用 if 条件判断,如果缩略图不为空,则显示带图样式;否则显示无图样式。

    {dede:list}
    <div class="item">
        {if $fields['litpic'] != ''}
            <!-- 有缩略图 -->
            <div class="img"><img src="[field:litpic/]" alt="[field:title/]"></div>
            <div class="content">
                <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
                <p>[field:info/]</p>
            </div>
        {else}
            <!-- 无缩略图 -->
            <div class="content-full">
                <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
                <p>[field:info/]</p>
            </div>
        {/if}
    </div>
    {/dede:list}
  3. Q: 如何只调用当前栏目的子栏目的文章? A: 这需要结合 {dede:channel}{dede:list},或者使用更高级的SQL标签 {dede:sql},对于初学者,推荐在后台通过“自定义列表”功能来实现,然后调用生成的列表。

希望这份详细的解析能帮助你彻底掌握 dede:list 的使用!

-- 展开阅读全文 --
头像
织梦自定义表单如何导出文档?
« 上一篇 01-05
c语言 elementtype
下一篇 » 01-05
取消
微信二维码
支付宝二维码

目录[+]