dede list如何调用文章内容?

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

下面我将从基础到进阶,全面讲解 list 标签的用法。

dede list 调用内容
(图片来源网络,侵删)

list 标签的基本语法

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}

结构解析:

  1. {dede:list}: 开始标签,用于定义一个列表循环。
  2. pagesize='10': 这是 list 标签的一个常用属性,表示每页显示 10 条记录。
  3. [field:xxx/]: 这是字段调用标签,用于在循环中输出文章的特定信息,如标题、链接、日期等,它必须放在 {dede:list}{/dede:list} 之间。
  4. {/dede:list}: 结束标签,表示循环结束。

核心属性

list 标签通过属性来控制输出的内容,以下是最重要的几个属性:

属性名 说明 示例
typeid 指定栏目ID,这是最常用的属性,用于调用指定栏目下的文章,如果省略,则默认调用当前栏目下的文章。 {dede:list typeid='3' pagesize='15'}
pagesize 每页显示条数,设置列表页一页要显示多少篇文章。 {dede:list pagesize='20'}
infolen 内容简介长度,截取文章摘要(description)显示的字符数。 {dede:list infolen='100'}
orderway 排序方式desc 表示降序(默认,最新的在前),asc 表示升序(最旧的在前)。 {dede:list orderway='asc'}
subday 调用指定天数内发布的文章subday='30' 表示调用最近30天内发布的文章。 {dede:list subday='7'}
channelid 指定模型ID,默认为1(文章模型),可以用于调用其他模型(如图集、软件等)的内容。 {dede:list channelid='2'}

常用字段调用

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

dede list 调用内容
(图片来源网络,侵删)
字段名 说明 示例代码
[field:title/] (可截断) [field:title/][field:title function='cn_substr(@me, 20)'/]
[field:arcurl/] 文章链接 <a href="[field:arcurl/]">[field:title/]</a>
[field:pubdate/] 发布日期(时间戳格式) [field:pubdate] (输出如:20250815)
[field:writer/] 作者 [field:writer/]
[field:source/] 来源 [field:source/]
[field:click/] 点击次数 [field:click/]
[field:litpic/] 文章缩略图 <img src="[field:litpic/]" alt="[field:title/]">
[field:description/] description) [field:description/][field:description function='cn_substr(@me, 100)'/]

高级字段调用(使用 function 函数):

  • 格式化日期:这是最常用的技巧,将时间戳转换为易读的日期格式。

    [field:pubdate function="MyDate('Y-m-d H:i',@me)"/]
    • 'Y-m-d H:i' 是日期格式,Y代表4位年份,m代表月份,d代表日,H代表24小时制小时,i代表分钟。
    • @me 代表当前字段的原始值(这里是时间戳)。
  • 截取字符串或摘要过长影响布局。

    [field:title function="cn_substr(@me, 40)"/] 

综合实例

假设我们要做一个“网站技术”栏目(栏目ID为5)的列表页,要求:

dede list 调用内容
(图片来源网络,侵删)
  • 每页显示 12 条文章,最多显示 30 个字符。
  • 显示文章摘要,最多 100 个字符。
  • 发布日期格式为 2025-08-15
  • 如果有缩略图,则显示缩略图,否则显示一张默认图片。

list_article.htm 模板文件代码示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">网站技术文章列表</title>
</head>
<body>
    <h1>网站技术文章列表</h1>
    <ul class="article-list">
        {dede:list typeid='5' pagesize='12' titlelen='30' infolen='100'}
            <li>
                <!-- 判断是否有缩略图,有则显示,没有则显示默认图 -->
                [field:litpic runphp='yes']
                    if(@me == '') @me = '/images/default.jpg';
                    else @me = @me;
                [/field:litpic]
                <a href="[field:arcurl/]" title="[field:title/]">
                    <img src="[field:litpic/]" alt="[field:title/]">
                </a>
                <div class="article-info">
                    <h2><a href="[field:arcurl/]">[field:title/]</a></h2>
                    <p class="summary">[field:description function="cn_substr(@me, 100)"]...</p>
                    <div class="meta">
                        <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"]</span>
                        <span class="click">阅读:[field:click/]</span>
                    </div>
                </div>
            </li>
        {/dede:list}
    </ul>
    <!-- 分页标签 -->
    <div class="dede_pages">
        <ul>
            {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
            </ul>
    </div>
</body>
</html>

进阶技巧与注意事项

  1. {dede:arclist}{dede:list} 的区别

    • {dede:list}: 专门用于列表页,它有一个分页过程,会根据当前是第几页来从数据库中读取对应范围的数据,它的效率更高,因为它只读取当前页的数据。
    • {dede:arclist}: 功能更强大的列表标签,可以在任何地方使用(包括首页、列表页、内容页),它一次性读取所有数据,然后在模板中进行循环分页,所以当数据量很大时(比如首页调用全站最新文章),可能会比较慢。

    简单总结:

    • 列表页,用 {dede:list}
    • ,或者需要更灵活调用时,用 {dede:arclist}
  2. 如何调用子栏目的内容? list 标签的 typeid 属性本身不支持直接调用子栏目,但你可以通过以下方式实现:

    • 方法一(推荐): 在后台栏目设置中,勾选“栏目属性”为“外部链接”,链接地址指向该子栏目的列表页URL,这样,点击父栏目时就会跳转到子栏目的列表页。
    • 使用 {dede:channel} 标签先获取所有子栏目的ID,然后用逗号拼接起来,赋值给 list 标签的 typeid 属性。
      {dede:channel type='son' typeid='父栏目ID'}
          [field:id/],
      {/dede:channel}

      这种方法需要配合PHP逻辑来实现,比较复杂,不常用。

  3. 性能优化

    • 尽量在 list 标签中使用 typeid 属性,明确指定数据来源,避免全站数据扫描。
    • pagesize 设置一个合理的值,不要过大。
    • 避免在循环中使用过于复杂的 function 函数。

希望这份详细的指南能帮助你完全掌握 DedeCMS 的 list 标签调用!

-- 展开阅读全文 --
头像
织梦网站移动端访问方法是什么?
« 上一篇 01-30
织梦生成更新后为何又自动还原?
下一篇 » 01-30
取消
微信二维码
支付宝二维码

目录[+]