{dede:arclist} 标签的基本结构
{dede:arclist
flag='h'
typeid='1,2,3'
row='10' len='30'
}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:arclist}
结构解析:
{dede:arclist ...}: 这是循环的开始标签,所有的属性(参数)都在这里设置。<li>...</li>: 这是循环输出的每一项的 HTML 结构,你可以根据需要自由定义,<div>、<article>等。[field:xxx/]: 这是字段标签,用于在循环体内获取当前文章的某个具体信息,比如标题、链接、发布时间等。{/dede:arclist}: 这是循环的结束标签,必不可少。
常用属性(参数)详解
属性用来控制你想要调用什么样的文章,下面是最常用的一些属性:
| 属性名 | 作用 | 示例 |
|---|---|---|
typeid |
指定栏目ID,只调用指定栏目及其子栏目下的文章。 | typeid='1' (调用栏目ID为1的文章)typeid='1,2' (调用栏目ID为1和2的文章)typeid='top' (调用顶级栏目) |
row |
调用文章数量,设置要输出的文章列表条数。 | row='5' (只输出5条文章) |
infolen |
摘要长度,设置文章摘要(description)显示的字符数。 | infolen='100' (摘要最多显示100个字符) |
flag |
特定标识,调用带有特定标识的文章。 | flag='h' (调用头条文章)flag='c' (调用推荐文章)flag='h,c' (调用既是头条又是推荐的文章) |
orderby |
排序方式,设置文章的排序规则。 | orderby='hot' (按浏览量排序)orderby='pubdate' (按发布时间排序,默认)orderby='sortrank' (按后台“置顶”排序) |
orderway |
排序方向,配合 orderby 使用,desc 为降序,asc 为升序。 |
orderway='desc' (降序,默认)orderway='asc' (升序) |
channelid |
模型ID,指定调用特定内容模型的文章。 | channelid='1' (调用文章模型)channelid='2' (调用图集模型) |
limit |
起始位置和数量,格式为 起始位置,数量。 |
limit='0,5' (从第0条开始,共5条,等同于row='5')limit='5,5' (从第5条开始,共5条,用于分页) |
常用字段(Field)详解
字段标签用于在循环体内获取并显示文章的具体信息。
| 字段名 | 作用 | 示例 |
|---|---|---|
[field:title/] |
。 | <a href="[field:arcurl/]">[field:title/]</a> |
[field:arcurl/] |
文章链接,指向文章详情页的完整URL。 | <a href="[field:arcurl/]">阅读全文</a> |
[field:pubdate/] |
发布时间,输出的是Unix时间戳,通常需要配合 function 进行格式化。 |
[field:pubdate function="MyDate('Y-m-d', @me)"/] (输出如: 2025-10-27) |
[field:description/] |
文章摘要,调用文章的摘要内容。 | <p>[field:description/]</p> |
[field:litpic/] |
文章缩略图,调用文章的封面图片。 | <img src="[field:litpic/]" alt="[field:title/]" /> |
[field:click/] |
文章点击量。 | 阅读: [field:click/]次 |
[field:typelink/] |
栏目链接,指向该文章所属栏目的链接。 | <span>[field:typelink/]</span> |
[field:id/] |
文章ID。 | <a href="/plus/del.php?arcid=[field:id/]" ...>删除</a> (后台常用) |
实战案例
案例1:首页调用头条新闻(带缩略图)
假设我们要在首页调用5条头条文章,每条显示标题、摘要和缩略图。
<!-- 调用5条头条文章 -->
{dede:arclist flag='h' row='5' titlelen='40' infolen='100'}
<div class="news-item">
<a href="[field:arcurl/]" class="news-thumb">
<img src="[field:litpic/]" alt="[field:title/]" />
</a>
<div class="news-content">
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p class="news-desc">[field:description/]</p>
<p class="news-date">[field:pubdate function="MyDate('Y-m-d', @me)"]</p>
</div>
</div>
{/dede:arclist}
案例2:指定栏目调用文章(带分页效果)
在某个列表页,我们想调用栏目ID为5和6下的所有文章,并实现分页。
<!-- 调用栏目ID为5和6下的文章,每页10条 -->
{dede:arclist typeid='5,6' row='10' titlelen='30'}
<li>
<span class="title">[field:pubdate function="MyDate('m-d', @me)"]</span>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
<!-- 分页代码 -->
<div class="dede_pages">
<ul>
{dede:pagelist listsize='4' listitem='pre,next,end,'}
</ul>
</div>
注意:列表页的分页通常使用 {dede:list} 标签,{dede:arclist} 主要用于首页或固定列表。{dede:list} 的用法和 arclist 非常相似,但它是专门为列表页分页设计的。
高级技巧:使用 channelid 调用其他模型
如果你的网站有自定义模型,产品模型”,ID为3,你可以这样调用:
{dede:arclist channelid='3' row='6'}
<div class="product">
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<img src="[field:litpic/]" alt="[field:title/]" />
<!-- 假设产品模型有一个自定义字段叫 'price' -->
<p>价格:[field:price/]</p>
</div>
{/dede:arclist}
注意:要调用自定义字段(如 price),请确保你的模型中已经定义了这个字段,并且开启了“使字段在列表页可以调用”的选项。
{dede:arclist} 是 DedeCMS 的灵魂标签,掌握它的关键在于:
- 理解结构:
{dede:arclist}+HTML+[field:xxx]+{/dede:arclist}。 - 熟悉属性:通过
typeid,row,flag等属性来精确筛选你想要的文章。 - 掌握字段:通过
[field:title],[field:arcurl]等字段来获取文章的各个信息。 - 勤加练习:尝试组合不同的属性和字段,实现各种复杂的列表效果。
希望这份详细的讲解能帮助你彻底搞懂 Dede me 循环!
