下面我将为你详细讲解如何使用 {dede:arclist},并提供从简单到复杂的多种实例。

(图片来源网络,侵删)
核心标记:{dede:arclist}
{dede:arclist} 是 DedeCMS 用于获取文章列表的自定义标记,功能非常强大,参数众多,要调用指定栏目的文章,关键在于使用 typeid 参数。
基础语法与常用参数
{dede:arclist typeid='' row='' titlelen='' orderby=''}
<a href='[field:arcurl/]'>[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
{/dede:arclist}
常用参数详解:
| 参数 | 说明 | 示例 |
|---|---|---|
typeid |
指定栏目ID,调用该栏目下的文章,多个栏目ID用英文逗号 隔开。 | typeid='2' (调用ID为2的栏目) |
row |
调用文章的数量。 | row='10' (调用10篇文章) |
orderby |
排序方式,常用值:pubdate (发布时间,默认)、click (点击量)、id (文章ID)。 |
orderby='click' (按点击量从高到低) |
idlist |
调用指定ID的文章,多个ID用逗号隔开,与 typeid 互斥。 |
idlist='5,8,12' |
channelid |
指定频道ID,默认为1 (文章频道)。 | channelid='1' |
limit |
限制起始位置和记录数,格式为 起始位置,记录数。 |
limit='0,5' (从第0条开始,取5条) |
noflag |
排除特定标记的文章,排除头条 'h'。 |
noflag='h' |
sub |
是否包含子栏目。sub='0' 或不写为不包含,sub='1' 为包含所有子栏目。 |
typeid='2' sub='1' (调用ID为2的栏目及其所有子栏目的文章) |
常用字段变量 (在 [] 中使用)
| 字段 | 说明 |
|---|---|
[field:title/] |
|
[field:arcurl/] |
文章链接 |
[field:pubdate/] |
发布时间 (时间戳格式) |
[field:description/] |
文章摘要 |
[field:litpic/] |
文章缩略图 |
[field:click/] |
文章点击量 |
[field:id/] |
文章ID |
实战案例
案例1:调用指定ID栏目的文章(最常用)
假设你要调用栏目ID为 5 的文章,并显示标题、发布时间和摘要,每篇文章带缩略图。
步骤1:找到栏目ID 在 DedeCMS 后台,【核心】-> 【栏目管理】,找到你想要调用的栏目,查看其“栏目ID”,新闻资讯的ID是5。

(图片来源网络,侵删)
步骤2:编写代码
将以下代码放入你想要显示文章列表的模板文件中 (如 index.htm, list_article.htm 等)。
<h2>新闻资讯</h2>
<ul class="news-list">
{dede:arclist typeid='5' row='5' titlelen='40' orderby='pubdate'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:litpic/]" alt="[field:title/]">
</a>
<div class="news-info">
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p class="news-desc">[field:description function='cn_substr(@me, 100)'/]...</p>
<span class="news-date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</div>
</li>
{/dede:arclist}
</ul>
代码解释:
typeid='5': 调用ID为5的栏目。row='5': 只显示5篇文章,len='40'`: 标题最多显示40个字符。orderby='pubdate': 按发布时间排序。[field:litpic/]: 调用文章的缩略图。[field:description function='cn_substr(@me, 100)'/]: 调用文章摘要,并使用cn_substr函数截取前100个字符。
案例2:调用当前栏目及其所有子栏目的文章
在列表页模板 (如 list_article.htm) 中,你经常需要调用当前栏目及其所有子栏目的文章,这时需要使用 typeid 和 sub 参数。
<h2>栏目列表</h2>
<ul>
{dede:arclist typeid='~id' row='10' sub='1'}
<li><a href="[field:arcurl/]">[field:title/]</a> - [field:pubdate function="MyDate('Y-m-d',@me)"]</li>
{dede:arclist}
</ul>
代码解释:
typeid='~id': 这是一个特殊用法,~id表示获取当前页面的栏目ID。sub='1': 表示包含当前栏目的所有子栏目。- 这个组合的意思就是:调用当前栏目及其所有子栏目下的文章。
案例3:调用多个指定栏目的文章
如果需要同时调用栏目ID为 3 和 7 的文章,用英文逗号隔开ID即可。
<h2>产品中心 & 案例展示</h2>
<ul>
{dede:arclist typeid='3,7' row='8' titlelen='30'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</ul>
案例4:带分页的文章列表调用
在列表页模板中,{dede:arclist} 通常与 {dede:pagelist} 配合使用来实现分页效果。
<h2>文章列表</h2>
{dede:list pagesize='10'}
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p>[field:description/]...</p>
<p>发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"]</p>
{/dede:list}
<!-- 分页代码 -->
<div class="dede_pages">
<ul>
{dede:pagelist listitem='info,index,end,pre,next,pageno' listsize='5'/}
</ul>
</div>
注意:
- 在列表页,
{dede:list}标记用于循环输出当前栏目下的文章,它本身就带分页功能。 {dede:arclist}通常用于首页、封面页或其他页面调用固定栏目的文章,它本身不带分页功能,如果需要在非列表页实现分页,需要更复杂的处理,但{dede:list}是专门为列表页设计的。
总结与排错
- 栏目ID是关键:确保你使用的
typeid是正确的,如果调用不出来,第一件事就是去后台核对栏目ID。 - 模板缓存:修改模板后,如果前台没有立即生效,请到后台【生成】->【更新HTML】,或者点击【一键更新网站】来更新缓存。
- 检查标记语法:确保
{dede:arclist}和{/dede:arclist}成对出现,参数中的引号是英文半角引号。 - 字段调用:确保使用的字段变量(如
[field:title/])是{dede:arclist}支持的。
通过以上方法和案例,你应该可以灵活地在 DedeCMS 中调用任何你想要的子栏目文章列表了。
