typeid 是什么?
typeid 是 dede:list 标签的一个核心属性,它的作用是指定当前列表页要显示的内容所属的栏目 ID。

typeid 就像一个“筛选器”,告诉 DedeCMS:“请只从这个指定的栏目里,把文章调出来,生成一个列表。”
typeid 的基本语法
在模板文件(通常是 list_栏目ID.htm)中,typeid 通常这样使用:
{dede:list typeid='栏目ID' pagesize='10'}
<a href="[field:arcurl/]">[field:title/]</a>
<p>[field:description function='cn_substr(@me,100)'/]...</p>
<span>[field:pubdate function='MyDate("Y-m-d",@me)'/]</span>
{/dede:list}
参数说明:
typeid='栏目ID': 这是最关键的部分。栏目ID是你要调用内容的那个栏目的数字 ID。typeid='2'就表示调用 ID 为 2 的栏目下的文章。pagesize='10': 这个参数与typeid并列,表示每页显示的文章数量,不是typeid的一部分,但经常一起使用。
typeid 的核心功能与常见用法
基本用法:指定单个栏目
这是最直接、最常见的方式,你明确知道要显示哪个栏目的内容。

场景: 你有一个名为“公司新闻”的栏目,其 ID 为 3,你希望创建一个专门展示“公司新闻”的列表页。
操作:
- 在后台 -> 栏目管理 -> 找到“公司新闻”栏目,记下其 ID(假设为 3)。
- 在模板文件夹中,创建或编辑
list_3.htm文件。 - 在模板文件中,使用
{dede:list typeid='3' ...}。
示例代码 (list_3.htm):
{dede:list typeid='3' pagesize='20'}
<li>
<span class="title"><a href="[field:arcurl/]">[field:title/]</a></span>
<span class="date">[field:pubdate function='MyDate("Y-m-d",@me)'/]</span>
</li>
{/dede:list}
这样,这个页面就会只显示 ID 为 3 的“公司新闻”栏目下的文章列表。

调用子栏目内容(重要功能)
这是 typeid 一个非常强大的功能,当你指定一个栏目的 ID 时,typeid 默认会同时调用该栏目及其所有一级子栏目下的文章。
场景: 你有一个“产品中心”栏目(ID 为 5),它下面有三个子栏目:“手机”(ID 6)、“电脑”(ID 7)、“配件”(ID 8),你希望创建一个页面,能同时展示所有产品的列表。
操作:
- 在后台找到“产品中心”栏目的 ID(假设为 5)。
- 创建或编辑
list_5.htm文件。 - 在模板文件中,使用
{dede:list typeid='5' ...}。
示例代码 (list_5.htm):
<h2>所有产品</h2>
<ul>
{dede:list typeid='5' pagesize='15'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:litpic/]" alt="[field:title/]">
<h3>[field:title/]</h3>
</a>
</li>
{/dede:list}
</ul>
这样,这个页面会同时显示 ID 为 6、7、8 的子栏目下的所有文章,就好像它们都在一个“产品总览”栏目下一样。
调用多个栏目的内容
如果你需要同时调用不相关的几个栏目的内容(同时调用“新闻”和“公告”),可以在 typeid 中用英文逗号 隔开多个栏目 ID。
场景: 你想在首页的某个位置同时显示“新闻”栏目(ID 2)和“公告”栏目(ID 4)的最新文章。
操作:
在首页模板文件(index.htm)中,使用 {dede:list typeid='2,4' ...}。
示例代码 (首页模板片段):
<div class="news-announcements">
<h3>新闻与公告</h3>
<ul>
{dede:list typeid='2,4' pagesize='8'}
<li><a href="[field:arcurl/]">[field:title/]</a> <span>[field:pubdate function='MyDate("m-d",@me)'/]</span></li>
{/dede:list}
</ul>
</div>
这样,这个列表就会混合显示 ID 为 2 和 ID 为 4 的栏目下的文章。
重要注意事项与最佳实践
-
栏目 ID 的获取:
- 最直接的方法是进入 DedeCMS 后台,点击【栏目管理】,鼠标移动到目标栏目名称上,浏览器状态栏或浏览器开发者工具的 Elements 面板中可以看到链接里包含的
cid=数字,这个数字就是 ID。 - 也可以直接查看数据库
dede_arctype表,id字段就是栏目 ID。
- 最直接的方法是进入 DedeCMS 后台,点击【栏目管理】,鼠标移动到目标栏目名称上,浏览器状态栏或浏览器开发者工具的 Elements 面板中可以看到链接里包含的
-
typeid的默认值:- 当你在
list_栏目ID.htm这样的模板文件中使用{dede:list}标签时,即使你不写typeid参数,DedeCMS 也会默认使用当前页面对应的栏目 ID。 - 在
list_3.htm中,{dede:list}和{dede:list typeid='3'}的效果是一样的,但在其他页面(如首页)中调用时,则必须指定typeid。
- 当你在
-
性能考虑:
- 调用子栏目(
typeid='5')比调用单个栏目(typeid='6')会产生更多的数据库查询,因为需要查询多个表。 - 调用过多不相关的栏目(
typeid='1,2,3,4,5,6')也会影响页面加载速度,应尽量避免在一个列表中调用过多无关的栏目。
- 调用子栏目(
-
与
arclist标签的区别:dede:list必须在列表页模板(list_xxx.htm)中使用,用于生成分页的列表。dede:arclist更加灵活,可以在任何页面(首页、列表页、内容页)使用,用于调用文章列表,但它不支持分页。typeid在这两个标签中的含义和用法基本一致,都是用来指定栏目。
| 用法 | typeid 值示例 |
功能描述 |
|---|---|---|
| 单个栏目 | typeid='3' |
只显示 ID 为 3 的栏目下的文章。 |
| 包含子栏目 | typeid='5' |
显示 ID 为 5 的栏目及其所有一级子栏目下的文章。 |
| 多个栏目 | typeid='2,4' |
混合显示 ID 为 2 和 4 的两个栏目下的文章。 |
| 不指定(在列表页) | 无 | 默认使用当前列表页面对应的栏目 ID。 |
掌握 typeid 的用法是灵活运用 DedeCMS list 标签的关键,能够帮助你高效地构建各种复杂的网站布局。
