dede列表页标签如何正确调用?

99ANYc3cd6
预计阅读时长 23 分钟
位置: 首页 DEDE建站 正文
  1. 最核心的列表循环标签
  2. 列表页常用字段标签
  3. 分页标签
  4. 完整列表页代码示例
  5. 高级技巧:列表内容附加表 (自定义字段) 的调用
  6. 常见问题与注意事项

最核心的列表循环标签

都必须包裹在一个循环标签 {dede:list} 中,这个标签会根据当前栏目的设定,循环输出满足条件的内容条目。

dede列表页标签调用
(图片来源网络,侵删)

基本语法:

{dede:list pagesize='10'}
    <!-- 循环内部,这里是每条列表内容的HTML结构 -->
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
{/dede:list}

{dede:list} 标签属性:

  • pagesize='数字'非常重要! 设置每页显示的文章数量。pagesize='10' 表示每页显示10篇文章,len='数字'长度,截取标题的字符数,titlelen='30'` 表示标题最多显示30个字符(一个汉字算一个字符)。
  • infolen='数字'简介长度,截取 description 字段的字符数。
  • orderway='asc/desc':排序方式。desc 为降序(默认,最新的在前),asc 为升序(最旧的在前)。
  • typeid='数字':指定栏目ID,如果想在非列表页(如首页)调用某个栏目的列表,可以使用此属性。typeid='1'

列表页常用字段标签

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

最常用的字段标签:

dede列表页标签调用
(图片来源网络,侵删)
说明 示例
[field:title/] <a href="[field:arcurl/]">[field:title/]</a>
[field:arcurl/] 文章链接 <a href="[field:arcurl/]">阅读全文</a>
[field:pubdate/] 发布日期(时间戳格式) [field:pubdate/] (通常需要格式化)
[field:description/] 简介 [field:description/] (通常需要截取)
[field:litpic/] 文章缩略图 <img src="[field:litpic/]" alt="[field:title/]">
[field:click/] 文章点击量 <span>点击:[field:click/]</span>
[field:source/] 文章来源 [field:source/]
[field:writer/] 文章作者 [field:writer/]

常用函数修饰(非常重要!):

DedeCMS 标签支持使用函数来处理字段内容,通过 function='函数名' 来调用。

  • 日期格式化MyDate('格式', @me)
    • @me 代表当前字段的原始值。
    • 示例:[field:pubdate function="MyDate('Y-m-d H:i',@me)"/] 输出 2025-10-27 15:30
  • 字符截取cn_substr('字符串', 长度)
    • 示例:[field:title function="cn_substr(@me, 30)"/] 截取标题前30个字符。
    • 示例:[field:description function="cn_substr(@me, 100)"/] 截取摘要前100个字符。
  • 去除 HTML 标签Html2Text(@me)
    • 在截取摘要前,最好先去除HTML标签,避免样式错乱。
    • 示例:[field:description function="cn_substr(Html2Text(@me), 100)"/]

分页标签

当文章数量超过 pagesize 设定的值时,就需要分页标签 {dede:pagelist/}

基本语法:

dede列表页标签调用
(图片来源网络,侵删)
<div class="dede_pages">
    <ul>
        {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
        </ul>
</div>

{dede:pagelist} 标签属性:

  • listsize='数字':显示的页码按钮数量。listsize='4' 会显示 ... 2 3 4 5 6 ... 这样的效果。
  • listitem='...':定义分页栏显示的项目,用逗号隔开。
    • info: 显示 "共X页,Y条记录"
    • index: 显示首页
    • pre: 显示上一页
    • next: 显示下一页
    • pageno: 显示页码
    • end: 显示尾页
    • option: 显示下拉跳转框

完整列表页代码示例

这是一个标准的列表页 list_article.htm 模板文件,包含了栏目名称、列表循环和分页。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
    <meta name="description" content="{dede:field.description function='html2text(@me)'/}" />
    <meta name="keywords" content="{dede:field.keywords/}" />
</head>
<body>
    <h1>{dede:field.title/}</h1>
    <p>当前位置:{dede:field.position/}</p>
    <div class="list">
        <!-- 
            pagesize='10' 每页显示10条
            titlelen='40' 标题最多40个字符
            orderby='pubdate' 按发布日期排序
        -->
        {dede:list pagesize='10' titlelen='40' orderby='pubdate'}
        <div class="list-item">
            <!-- 如果有缩略图则显示,否则显示默认图或文字 -->
            [field:litpic runphp='yes']
                if(@me == '') @me = '<div class="no-pic">暂无图片</div>';
                else @me = '<a href="[field:arcurl/]"><img src="[field:litpic/]" alt="[field:title/]"></a>';
            [/field:litpic]
            <div class="item-info">
                <h2><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h2>
                <p class="intro">
                    <!-- 先去除HTML标签,再截取100个字符作为摘要 -->
                    [field:description function='cn_substr(Html2Text(@me), 100)'/]...
                </p>
                <div class="item-meta">
                    <span>发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]</span>
                    <span>浏览:[field:click/]</span>
                </div>
            </div>
        </div>
        {/dede:list}
    </div>
    <!-- 分页 -->
    <div class="dede_pages">
        <ul>
            {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
        </ul>
    </div>
</body>
</html>

高级技巧:列表内容附加表 (自定义字段) 的调用

如果你的文章模型中添加了“自定义字段”(price, author_intro 等),并且这些字段在“列表内容附加表”中,调用方式会有所不同。

调用方法:

{dede:list} 循环内,使用 [field:自定义字段名/] 即可。

示例: 假设你在文章模型中添加了一个自定义字段 book_author (作者)。

{dede:list pagesize='10'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>作者:[field:book_author/]</span>  <!-- 直接调用自定义字段 -->
        <span>价格:[field:price/]</span>      <!-- 调用另一个自定义字段 -->
    </li>
{/dede:list}

注意事项:

  1. 附加表设置:在后台“内容模型管理”中,确保你的模型已经勾选了“列表内容附加表”。
  2. 字段同步:添加或修改自定义字段后,需要到“数据库修复”工具中执行“更新数据表字段结构”,确保数据库中存在这些字段。

常见问题与注意事项

  1. 列表页不显示内容?

    • 检查 {dede:list} 标签是否正确书写。
    • 检查 pagesize 是否设置为了0。
    • 检查当前栏目下是否有已发布的文章。
    • 检查文章是否被归档到了其他栏目。
  2. [field:pubdate/] 显示的是一串数字?

    • 这是因为 pubdate 字段存储的是时间戳,必须使用 function="MyDate()" 来格式化。
    • 错误[field:pubdate/]
    • 正确[field:pubdate function="MyDate('Y-m-d',@me)"]
  3. 列表页调用的是首页内容?

    • 确保你编辑的是正确的模板文件,列表页模板通常是 list_*.htm (如 list_article.htm),而不是 index.htm (首页模板)。
    • 检查后台“栏目管理”中,该栏目是否选择了正确的列表页模板。
  4. 如何改变排序方式?

    • {dede:list} 标签中使用 orderbyorderway 属性。
    • 按发布日期降序(最新在前):{dede:list orderby='pubdate' orderway='desc'}
    • 按点击量降序(点击最多在前):{dede:list orderby='click' orderway='desc'}
    • 按ID升序:{dede:list orderby='id' orderway='asc'}

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

-- 展开阅读全文 --
头像
前台为何不显示留言?
« 上一篇 今天
没有更多啦!
下一篇 »

相关文章

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

目录[+]