织梦Dede list标签如何正确调用与使用?

99ANYc3cd6
预计阅读时长 22 分钟
位置: 首页 织梦建站 正文

{dede:list} 是用于在列表页(如首页、栏目页、搜索页等)循环输出文章列表的专用标签,掌握它,是进行织梦二次开发和模板制作的基础。

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

{dede:list} 的基本语法

{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} 标签可以通过在起始标签内添加参数来控制列表的显示方式,这些参数是可选的,但最常用的是 pagesize

pagesize - 每页显示的文章数量

这是最重要的参数,用于控制当前页面显示多少篇文章。

  • 语法: pagesize='数字'
  • 示例: pagesize='10' 表示每页显示10篇文章。
  • 说明: 如果不设置此参数,织梦会使用后台“系统参数”中设置的“列表每页默认显示条数”。

titlelen - 标题长度

用于截取文章标题的显示长度,防止标题过长影响布局。

织梦 dede list 详解
(图片来源网络,侵删)
  • 语法: titlelen='数字'
  • 示例: titlelen='40' 表示标题只显示前40个字符(一个汉字算2个字符,一个英文/数字算1个字符)。
  • 说明: 如果不设置,则显示完整标题。

infolen - 摘要长度

用于截取文章摘要(description字段)的显示长度。

  • 语法: infolen='数字'
  • 示例: infolen='200' 表示摘要只显示前200个字符。
  • 说明: 如果文章没有填写摘要,则默认截取文章正文的前部分内容。

orderway - 排序方式

用于控制文章的排序顺序。

  • 语法: orderway='desc'orderway='asc'
  • :
    • desc: 降序(默认),即从大到小,按发布时间排序,则最新的文章排在最前面。
    • asc: 升序,即从小到大,按发布时间排序,则最早的文章排在最前面。
  • 说明: 此参数的排序依据由 orderby 参数决定。

orderby - 排序依据

用于指定文章按照哪个字段进行排序。

  • 语法: orderby='字段名'
  • 常用值:
    • sortrank: 默认值,按文章的排序级别(后台“自定义排序”设置)排序。
    • id: 按文章ID排序。
    • pubdate: 按文章发布时间排序。
    • click: 按文章点击量排序。
    • arcrank: 按文章权限级别排序。
    • lastpost: 按最后评论时间排序。
  • 说明: orderbyorderway 通常配合使用,orderby='pubdate' orderway='desc' 表示按发布时间降序排列。

channelid - 指定频道ID

当你的列表页需要调用其他频道的文章时使用。

织梦 dede list 详解
(图片来源网络,侵删)
  • 语法: channelid='数字'
  • 示例: channelid='1' 表示调用文章频道(默认频道ID通常为1)。
  • 说明: 这个参数在制作聚合页或调用特定模型内容时非常有用。

offset - 数据偏移量

用于从结果集中跳过前N篇文章,常用于实现“热门文章”、“最新文章”等分栏效果。

  • 语法: offset='数字'
  • 示例: offset='5' 表示从第6篇文章开始调用,跳过前5篇。
  • 说明: 常与 pagesize 配合,offset='5' pagesize='10' 表示从第6篇文章开始,再取10篇。

常用字段变量详解

{dede:list} 循环体内,可以使用 [field:字段名/][field:字段名 function="自定义函数"/] 来调用文章的各种信息。

文章基本信息

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

带函数处理的高级字段

很多时候,我们需要对原始数据进行格式化处理,这时就需要使用 function 属性。

时间格式化

  • 原始数据: [field:pubdate/] 输出的是一串数字(如 1703123456)。

  • 格式化输出: 使用 MyDate 函数。

      <!-- 格式:Y-m-d H:i:s -->
      <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
      <!-- 输出:2025-12-21 15:30:56 -->
      <!-- 格式:m-d -->
      <span>[field:pubdate function="MyDate('m-d',@me)"/]</span>
      <!-- 输出:12-21 -->

标题截取

  • 原始数据: [field:title/] 是完整标题。
  • 截取输出: 使用 cn_substr 函数(titlelen 参数本质上也是调用此函数)。
      <!-- 截取20个字符 -->
      <a href="[field:arcurl/]">[field:title function='cn_substr(@me, 20)'/]</a>

点击数格式化

  • 原始数据: [field:click/] 是纯数字。
  • 格式化输出: 可以自定义格式,如 阅读(xxx)
      <span>阅读([field:click/])</span>

缩略图处理

  • 存在缩略图时显示,不存在时不显示:
      [field:litpic runphp='yes']
          if(@me != '') {
              @me = '<img src="' . @me . '" alt="[field:title/]">';
          } else {
              @me = '<img src="/images/default.jpg" alt="默认图片">';
          }
      [/field:litpic]
    • 说明: runphp='yes' 表示开启PHP执行。@me 代表当前字段的原始值。

完整示例

假设我们要制作一个常见的文章列表,包含标题、发布时间、摘要和缩略图,每页显示12篇,按发布时间倒序排列。

HTML 模板代码 (list_article.htm)

{dede:list pagesize='12' orderby='pubdate' orderway='desc'}
    <div class="article-item">
        <!-- 缩略图 -->
        <div class="article-thumb">
            <a href="[field:arcurl/]" title="[field:title/]">
                <img src="[field:litpic/]" alt="[field:title function='html2text(@me)'/]">
            </a>
        </div>
        <!-- 标题 -->
        <h3 class="article-title">
            <a href="[field:arcurl/]">[field:title/]</a>
        </h3>
        <!-- -->
        <p class="article-summary">
            [field:description function='cn_substr(@me, 120)'/]...
        </p>
        <!-- 元信息(时间、点击) -->
        <div class="article-meta">
            <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"]</span>
            <span class="views">阅读([field:click/])</span>
        </div>
    </div>
{/dede:list}
<!-- 分页条 -->
<div class="pagination">
    {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
    {/dede:pagelist}
</div>

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

这两个标签功能相似,但应用场景和性能有区别。

特性 {dede:list} {dede:arclist}
应用场景 列表页专用,在栏目列表页、搜索页、专题页等需要自动分页的页面使用。 通用列表,可以在任何地方(包括首页、列表页、内容页)调用文章列表。
分页 自动处理,列表页会自动根据 pagesize 和总文章数生成分页链接。 不处理分页,它只负责输出当前需要的数据,分页需要手动实现或结合其他标签。
性能 更高,因为它专门为列表页优化,通常只调用必要的字段。 稍低,因为它更灵活,可以调用任意字段,默认可能会调用更多数据。
主要用途 制作标准的、可分页的栏目列表。 制作首页推荐、热门文章、相关文章、随机文章等小范围的列表。

简单总结

  • 要做栏目列表页,用 {dede:list}
  • 要在首页或其他地方调用几篇文章,用 {dede:arclist}

常见问题与技巧

为什么我的列表页没有内容?

  • 检查栏目是否设置了“使用列表模板”。
  • 检查栏目是否选择了“列表”频道模型。
  • 检查栏目下是否有已发布的文章。
  • 检查文章是否被“仅动态”或“仅静态”等选项限制。

如何调用指定子栏目的文章?

  • {dede:list} 标签外面包裹一个 {dede:channel} 标签,并设置 typeid 为父栏目ID。
  • {dede:list} 中使用 typeid='子栏目ID',如果子栏目很多,可以用逗号隔开,如 typeid='5,6,7'

如何实现列表页和内容页URL伪静态?

  • 后台 -> 系统 -> 系统基本参数 -> 核心设置 -> “是否使用伪静态”:选择“是”。
  • 根据你的服务器环境(Apache, Nginx, IIS)配置对应的伪静态规则文件(.htaccess, nginx.conf等),织梦默认会提供规则文件,但需要上传到网站根目录并正确配置。

希望这份详解能帮助你彻底掌握织梦的 {dede:list}

-- 展开阅读全文 --
头像
C语言OpenProcess失败,原因何在?
« 上一篇 昨天
NodeMCU用C语言如何实现WiFi通信?
下一篇 » 昨天

相关文章

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