使用 typeid 属性
{dede:arclist} 标签有一个专门的属性 typeid,用于指定要调用文章的栏目 ID。

基本语法:
{dede:arclist typeid='栏目ID' titlelen='40' row='10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
参数说明:
typeid='栏目ID':这是最关键的参数,将其值设置为你想要调用文章的栏目 ID,len='40'`:标题长度,截取 40 个字符。row='10':获取文章的数量,这里是 10 篇。[field:arcurl/]:文章链接。[field:title/]。[field:pubdate function="MyDate('Y-m-d',@me)"/]:文章发布日期,使用MyDate函数格式化为年-月-日。
如何获取栏目 ID?
在编写代码之前,你必须先知道目标栏目的 ID,获取方法很简单:
- 登录你的 DedeCMS 后台。
- 在左侧菜单栏找到 “核心” -> “栏目管理”。
- 在栏目列表中,将鼠标移动到你想要调用的栏目名称上,浏览器左下角状态栏会显示该栏目的链接,
.../catalog_add.php?dopost=edit&channelid=1&cid=5。 - 这里的
cid=5中的5就是这个栏目的 ID。
不同场景下的调用方法
调用单个指定栏目的文章
这是最简单的情况,直接使用 typeid 并填入 ID 即可。

示例:调用栏目 ID 为 5 的最新 10 篇文章。
<h2>公司新闻</h2>
<ul>
{dede:arclist typeid='5' titlelen='30' row='10'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
</ul>
调用多个指定栏目的文章
如果你想同时调用不同几个栏目的文章,只需用英文逗号 隔开它们的 ID 即可。
示例:同时调用栏目 ID 为 5(公司新闻)和 6(产品中心)的最新文章。
<h2>最新资讯</h2>
<ul>
{dede:arclist typeid='5,6' titlelen='30' row='10'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
</ul>
调用顶级栏目的所有子栏目文章
这是一个非常常见的需求,比如在首页的某个版块显示“所有新闻”或“所有产品”,而这个“新闻”或“产品”本身是一个顶级栏目,下面有多个子栏目(如“国内新闻”、“国际新闻”、“行业动态”等)。

这时,你不需要手动输入所有子栏目的 ID,DedeCMS 提供了一个特殊的变量 topid 来实现。
语法: typeid='top'
示例:假设“新闻中心”是一个顶级栏目,ID为 3,它下面有 5,6,7 等子栏目,要调用“新闻中心”下所有子栏目的文章。
<h2>新闻中心</h2>
<ul>
{dede:arclist typeid='top' titlelen='30' row='15'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
</ul>
注意: typeid='top' 会调用整个网站所有顶级栏目下子栏目的文章,如果你只想调用某一个特定顶级栏目下的所有子栏目文章,需要结合 channel 标签使用,下面会讲到。
调用当前栏目及其所有子栏目的文章
这个通常用在列表页(list*.php)或内容页(article*.php)中,用于显示当前栏目及其下级栏目的文章。
语法: typeid='self'
示例:在栏目列表页模板 list_article.htm 中,调用当前栏目及其所有子栏目的文章。
<h2>栏目文章列表</h2>
<ul>
{dede:arclist typeid='self' titlelen='30' row='20'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
</ul>
高级用法:结合 {dede:channel}
当需求比较复杂时,比如你想在首页动态调用某个顶级栏目(如“新闻中心”)下的所有子栏目,并为每个子栏目分别调用其下的文章,这时就需要 {arclist} 和 {channel} 标签嵌套使用。
示例:在首页调用“新闻中心”(ID=3)下的所有子栏目,并显示每个子栏目的最新 5 篇文章。
<h2>新闻中心</h2>
{dede:channel type='son' typeid='3'}
<h3><a href="[field:typeurl/]">[field:typename/]</a></h3>
<ul>
{dede:arclist row='5' titlelen='30'}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
{/dede:arclist}
</ul>
{/dede:channel}
代码解析:
{dede:channel type='son' typeid='3'}:
typeid='3': 指定父栏目为 ID 是 3 的“新闻中心”。
type='son': 表示只调用它的直接子栏目。
[field:typeurl/]: 子栏目的链接。
[field:typename/]: 子栏目的名称。
{dede:arclist row='5' titlelen='30'}:
- 因为
{arclist} 标签被放在 {channel} 循环内部,它会自动继承当前循环到的子栏目 ID,所以这里不需要写 typeid,它会默认调用当前子栏目的文章。
row='5': 每个子栏目调用 5 篇文章。
常用属性速查表
属性名
功能
示例
typeid
指定栏目ID
typeid='5' 或 typeid='5,6,7'
row
调用文章数量
row='10'
infolen
内容简介长度
infolen='200'
orderby
排序方式
orderby='pubdate'(按发布时间), orderby='hot'(按点击量), orderby='sortrank'(按权重)
idlist
指定文章ID调用
idlist='1,3,5' (与typeid互斥)
channelid
指定模型ID
channelid='1' (文章), channelid='2' (图集)
limit
限制起始位置和数量
limit='0,5' (从第0条开始,取5条)
typeid='top'
调用所有顶级栏目的子栏目文章
typeid='self'
调用当前栏目及其子栏目文章 (用于列表页/内容页)
希望这份详细的指南能帮助你完全掌握 dede:arclist 调用栏目 ID 的方法!
当需求比较复杂时,比如你想在首页动态调用某个顶级栏目(如“新闻中心”)下的所有子栏目,并为每个子栏目分别调用其下的文章,这时就需要 {arclist} 和 {channel} 标签嵌套使用。
示例:在首页调用“新闻中心”(ID=3)下的所有子栏目,并显示每个子栏目的最新 5 篇文章。
<h2>新闻中心</h2>
{dede:channel type='son' typeid='3'}
<h3><a href="[field:typeurl/]">[field:typename/]</a></h3>
<ul>
{dede:arclist row='5' titlelen='30'}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
{/dede:arclist}
</ul>
{/dede:channel}
代码解析:
{dede:channel type='son' typeid='3'}:typeid='3': 指定父栏目为 ID 是 3 的“新闻中心”。type='son': 表示只调用它的直接子栏目。[field:typeurl/]: 子栏目的链接。[field:typename/]: 子栏目的名称。
{dede:arclist row='5' titlelen='30'}:- 因为
{arclist}标签被放在{channel}循环内部,它会自动继承当前循环到的子栏目 ID,所以这里不需要写typeid,它会默认调用当前子栏目的文章。 row='5': 每个子栏目调用 5 篇文章。
- 因为
常用属性速查表
| 属性名 | 功能 | 示例 |
|---|---|---|
typeid |
指定栏目ID | typeid='5' 或 typeid='5,6,7' |
row |
调用文章数量 | row='10' |
infolen |
内容简介长度 | infolen='200' |
orderby |
排序方式 | orderby='pubdate'(按发布时间), orderby='hot'(按点击量), orderby='sortrank'(按权重) |
idlist |
指定文章ID调用 | idlist='1,3,5' (与typeid互斥) |
channelid |
指定模型ID | channelid='1' (文章), channelid='2' (图集) |
limit |
限制起始位置和数量 | limit='0,5' (从第0条开始,取5条) |
typeid='top' |
调用所有顶级栏目的子栏目文章 | |
typeid='self' |
调用当前栏目及其子栏目文章 (用于列表页/内容页) |
希望这份详细的指南能帮助你完全掌握 dede:arclist 调用栏目 ID 的方法!
