dede datalist属性具体如何使用?

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

dede:list 主要用于在列表页(如首页、栏目页、搜索页等)循环输出文章列表,它的功能类似于 PHP 中的 foreach 循环,是 DedeCMS 内容列表展示的基础。

dede datalist 属性
(图片来源网络,侵删)

dede:list 的基本语法

dede:list 标签通常成对出现,包含一个开始标签 {dede:list} 和一个结束标签 {/dede:list},所有需要在循环中重复显示的 HTML 代码都放置在这两个标签之间。

{dede:list}
    <!-- 循环体:这里放置每篇文章的HTML结构 -->
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
{/dede:list}

核心属性

dede:list 的行为由其属性控制,这些属性通常写在开始标签内。

typeid (栏目ID)

  • 作用:指定要获取内容的栏目ID。
  • 类型:数字
  • 说明
    • 如果指定了 typeid,则只显示该栏目及其子栏目下的文章。
    • 如果不指定,则根据页面所在的栏目自动获取,在 list.php?tid=5 页面,typeid 默认就是 5。
    • 如果想获取所有栏目的内容,可以设置为 typeid='0'

row (获取条数)

  • 作用:设置要输出的文章数量。
  • 类型:数字
  • 说明
    • 默认值为 10,即每页显示 10 篇文章。
    • 这个值会与后台的“列表每页条数”设置进行交互,最终取较小值。

titlelen (标题长度)

  • 作用:截取文章标题的显示长度。
  • 类型:数字 (单位:字节)
  • 说明
    • 过长,可以使用此属性进行截断,并自动添加省略号 。
    • titlelen='30' 表示标题最多显示 30 个字节(一个汉字占2个字节,一个英文占1个字节)。

infolen (摘要长度)

  • 作用:截取文章摘要(description 字段)的显示长度。
  • 类型:数字 (单位:字节)
  • 说明
    • titlelen 类似,用于控制文章摘要的显示长度。
    • 如果文章没有填写摘要,则会自动从文章正文中截取。

imgwidth & imgheight (缩略图尺寸)

  • 作用:强制设置文章缩略图的显示宽度和高度。
  • 类型:数字 (单位:像素)
  • 说明
    • 这两个属性通常配合 {dede:field name='imglink'/}<img src="[field:litpic/]"> 使用。
    • 它只影响前端显示,不会改变上传的图片原始尺寸,如果比例不匹配,图片可能会被拉伸。

orderby (排序方式)

  • 作用:设置文章的排序依据。
  • 类型:字符串
  • 常用值
    • senddate:按发布时间排序 (默认)。
    • pubdate:按发布时间排序 (与 senddate 通常一致)。
    • hotclick:按点击量排序。
    • lastpost:按最后评论时间排序。
    • scores:按评分排序。
    • id:按文章ID排序。

orderway (排序方向)

  • 作用:设置排序的升降序。
  • 类型:字符串 (descasc)
  • 常用值
    • desc:降序 (从大到小,时间最新的在前,点击量高的在前)。
    • asc:升序 (从小到大)。
  • 说明:必须与 orderby 属性配合使用,默认为 desc

完整的属性示例

这是一个包含多个属性的 dede:list 标签,非常常见:

{dede:list typeid='5' row='8' titlelen='40' infolen='150' orderby='click' orderway='desc'}
    <div class="article-item">
        <div class="article-thumb">
            <a href="[field:arcurl/]">
                <img src="[field:litpic/]" alt="[field:title/]" width="200" height="150">
            </a>
        </div>
        <div class="article-info">
            <h2><a href="[field:arcurl/]">[field:title/]</a></h2>
            <p class="summary">[field:description function='cn_substr(@me, 150)'/]...</p>
            <div class="article-meta">
                <span>作者:[field:writer/]</span>
                <span>时间:[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]</span>
                <span>点击:[field:click/]</span>
            </div>
        </div>
    </div>
{/dede:list}

代码解释

dede datalist 属性
(图片来源网络,侵删)
  • 从 ID 为 5 的栏目及其子栏目中获取文章。
  • 每页显示 8 篇,最多显示 40 个字节,最多显示 150 个字节。
  • 按点击量从高到低排序。

dede:list 内部使用的字段

{dede:list}{/dede:list} 之间,我们可以使用 [field:字段名/] 的形式来调用文章的各种信息。

| 字段名 | 说明 | 示例 | | :--- | :--- | :--- | | 文章标题 | [field:title/] | | arcurl | 文章链接 | [field:arcurl/] | | description | | [field:description/] | | litpic | 缩略图地址 | [field:litpic/] | | pubdate | 发布时间 (时间戳) | [field:pubdate/] | | click | 点击量 | [field:click/] | | writer | 作者 | [field:writer/] | | source | 来源 | [field:source/] | | typename | 所属栏目名 | [field:typename/] | | id | 文章ID | [field:id/] |

字段值的处理(使用 function)

对于时间戳等需要格式化的字段,可以使用 function 属性进行处理。

<!-- 格式化发布时间 -->
[field:pubdate function="MyDate('Y-m-d',@me)"/]
<!-- 更复杂的格式化 -->
[field:pubdate function="MyDate('Y年m月d日 H时i分',@me)"/]
<!-- 截取摘要并过滤HTML标签 -->
[field:description function='cn_substr(html2text(@me), 150)'/]

注意function 中使用的 @me 代表当前字段的原始值。

dede datalist 属性
(图片来源网络,侵删)

dede:arclist 的区别

初学者很容易混淆 dede:listdede:arclist,它们的主要区别如下:

特性 dede:list dede:arclist
使用场景 列表页 (list.php) 非列表页(首页、封面页、文章页等)
分页 自动支持分页,底层自动生成分页代码。 不支持自动分页,需要手动配合 php 代码实现分页逻辑。
性能 在列表页中性能更好,代码更简洁。 功能更强大,但代码稍复杂。
底层机制 调用 list_artilce.htm 模板。 调用 article_spec.htm 模板。

简单总结

  • 只要在是文章列表页面(URL 中包含 tid 参数),就用 {dede:list}
  • 在其他任何地方(如首页、文章详情页、自定义页面)需要调用文章列表,就用 {dede:arclist}

常见问题与注意事项

  1. [field:arcurl/] 打不开链接?

    • 确保文章已生成静态 HTML 文件。dede:list 依赖静态文件来获取链接。
    • 检查文章的“跳转网址”字段是否为空,如果不为空,arcurl 会指向跳转地址。
  2. 排序不生效?

    • 检查 orderbyorderway 的值是否正确。
    • 确保数据库中对应的字段(如 click)有值,新文章的点击量可能为 0。
  3. 分页代码在哪?

    • {dede:list} 的分页代码不需要自己写,它通常紧跟在 {dede:list} 循环体的后面,使用 {dede:pagelist/} 标签来显示。

    • list_article.htm 模板中,结构通常是:

        {dede:list}
            <!-- 循环内容 -->
        {/dede:list}
        <!-- 分页条 -->
        <div class="dede_pages">
            <ul>
                {dede:pagelist listsize="4" listitem="info,index,end,pre,next,pageno"}
                {/dede:pagelist}
            </ul>
        </div>

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

-- 展开阅读全文 --
头像
dede arclist type参数如何正确使用?
« 上一篇 2025-12-18
dede arclist如何用Java实现?
下一篇 » 2025-12-18
取消
微信二维码
支付宝二维码

目录[+]