typeid 是织梦模板标签中最核心、最常用的参数之一,它的作用是指定要获取内容的数据栏目(或频道)的ID。

几乎所有需要调用文章、列表、栏目信息的地方,都需要用到 typeid 来告诉系统:“我要从哪个栏目里拿数据”。
typeid 的基本概念
- 全称:
typeid(type ID 的缩写) - 含义: 栏目ID,每个在后台创建的栏目,都有一个唯一的ID编号。
- 作用域: 广泛应用于织梦的列表页模板、首页模板、文章页模板等,用于限定数据查询的范围。
如何获取 typeid 的值?
在制作模板时,你需要先知道目标栏目的ID,获取方法非常简单:
- 登录织梦DedeCMS后台。
- 进入「核心」 -> 「栏目管理」。
- 找到你想要调用的那个栏目,将鼠标光标悬停在该栏目名称上。
- 浏览器左下角的状态栏会显示该栏目的编辑链接,
.../dede/editype.php?id=2。 - 这个链接中的
id=2就是该栏目的 typeid,这里的值就是2。
typeid 在常用标签中的使用
typeid 的使用方式会根据不同的标签而略有不同。
a. 在列表页模板中使用 ({dede:list})
这是 typeid 最经典的应用场景,在栏目列表页(如 list_article.htm),你需要用 typeid 来指定当前栏目应该显示哪些文章。

语法:
{dede:list typeid='栏目ID' pagesize='20'}
<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}
示例:
假设你要调用ID为 3 的“技术分享”栏目的文章列表,typeid 的写法如下:
{dede:list typeid='3' pagesize='10'}
<li>
<span class="title"><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></span>
<span class="date">[field:pubdate function='MyDate('Y-m-d',@me)'/]</span>
</li>
{/dede:list}
重要提示: 在列表页模板中,typeid 参数通常是可选的,如果你不填写 typeid,织梦会自动获取当前页面对应的栏目ID,但在实际开发中,显式地写上 typeid 是一个非常好的习惯,它能让你的模板逻辑更清晰,避免因模板嵌套等原因产生的错误。
b. 在首页模板中使用 ({dede:arclist})
在首页模板中,你可能需要调用不同栏目的文章,这时 typeid 就变得至关重要。

语法:
{dede:arclist typeid='栏目ID1,栏目ID2' titlelen='30' row='10'}
<a href="[field:arcurl/]">[field:title/]</a>
{/dede:arclist}
示例:
假设首页需要同时显示ID为 2 的“行业动态”和ID为 3 的“技术分享”两个栏目的最新文章,可以用逗号隔开:
<h3>最新资讯</h3>
<ul>
{dede:arclist typeid='2,3' titlelen='40' row='8'}
<li><span class='date'>[field:pubdate function='MyDate('m-d',@me)'/]</span><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</ul>
高级用法:
- 排除某个栏目: 如果你想调用除了某个栏目外的所有栏目,可以使用
notypeid。{dede:arclist notypeid='5' row='10'} ... {/dede:arclist}上述代码会调用除了ID为
5的栏目以外的所有栏目的文章。
c. 在文章页模板中使用 ({dede:field})
页(如 article_article.htm),你可能需要获取当前文章所属的栏目名称或栏目链接,这时 typeid 就是当前文章所在栏目的ID。
语法:
{dede:field name='typeid' /}
这个标签会直接输出当前文章的栏目ID(数字),但通常我们更需要的是栏目名称和链接。
常用组合: 获取当前栏目的名称:
{dede:field name='typename' /}
获取当前栏目的链接:
<a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a>
这里的 {dede:field name='typeid'} 是由系统自动赋值的,你无需手动指定。
d. 在栏目导航标签中使用 ({dede:channel})
{dede:channel} 用于生成栏目导航。typeid 用于指定从哪个栏目开始显示其子栏目。
语法:
{dede:channel typeid='上级栏目ID' type='son' currentstyle='<li class='thisclass'><a href='~typelink~'>~typename~</a></li>'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
示例:
假设网站的“产品中心”栏目ID为 6,它下面有多个子栏目,要在首页显示“产品中心”下的所有子栏目,可以这样写:
<div class="product-nav">
<ul>
{dede:channel typeid='6' type='son'}
<li><a href="[field:typelink/]" title="[field:typename/]">[field:typename/]</a></li>
{/dede:channel}
</ul>
</div>
typeid='6': 指定从ID为6的栏目开始查找。type='son': 表示只查找其子栏目,如果用type='self',则包含自己和子栏目。
特殊值和技巧
-
typeid='0':- 在
{dede:arclist}中,typeid='0'表示调用所有频道(包括所有顶级栏目和普通栏目)下的内容。 - 在
{dede:list}中,通常不使用typeid='0',因为没有实际意义。
- 在
-
typeid='top':- 在
{dede:arclist}中,typeid='top'表示调用所有顶级栏目(一级栏目)下的内容。 - 这是一个非常实用的技巧,用于调用全站所有主栏目的最新内容。
- 在
-
动态获取栏目ID: 在某些复杂场景下,你可能需要通过PHP代码来动态获取
typeid,尤其是在制作自定义页面时。<?php $typeid = isset($typeid) ? $typeid : 0; // 或者 $typeid = $GLOBALS['typeid']; ?>
然后在标签中使用这个PHP变量:
{dede:list typeid='<?php echo $typeid; ?>'} ... {/dede:list}
| 使用场景 | 标签名 | typeid 作用 |
示例 |
|---|---|---|---|
| 列表页 | {dede:list} |
指定当前列表页要显示的文章所属栏目(可省略,但建议写明) | {dede:list typeid='3'} |
| 首页/其他页 | {dede:arclist} |
指定要调用的文章来自哪些栏目,可多个 | {dede:arclist typeid='2,3'} |
| 文章页 | {dede:field} |
代表当前文章所在的栏目ID(系统自动赋值) | {dede:field name='typeid'} |
| 子栏目列表 | {dede:channel} |
指定从哪个栏目开始获取其子栏目 | {dede:channel typeid='6' type='son'} |
掌握 typeid 的用法是织梦模板开发的基石,理解它能让你精准地控制内容的显示范围,从而构建出结构清晰、内容丰富的网站。
