使用DedeCMS模板标签(推荐)
这是最标准、最安全的方法,因为它利用了DedeCMS内置的变量,不容易出错,且代码简洁。

(图片来源网络,侵删)
核心标签:{dede:field.typeid/}
页模板(article_article.htm)中,{dede:field.typeid/} 这个标签可以直接输出当前文章的顶级栏目ID。
示例代码:
{dede:field.name/} <!-- 输出文章标题 -->
<hr>
<p>当前文章的顶级栏目ID是:<strong>{dede:field.typeid/}</strong></p>
如何使用:
您可以直接在模板中插入 {dede:field.typeid/},它就会被替换成对应的数字ID,这个ID是文章所在栏目的顶级栏目ID,这对于大多数判断场景(如调用指定顶级栏目下的内容、设置不同样式等)已经足够。
使用PHP代码(更灵活)
如果您需要在模板中进行更复杂的逻辑判断,或者需要获取文章的直接上级栏目ID(而不是顶级栏目ID),那么在模板中直接嵌入PHP代码会更灵活。
核心变量:$typeid
在文章页,DedeCMS已经将文章ID、栏目ID等信息存入了PHP变量中。$typeid 变量存储了当前文章的直接上级栏目ID。
示例代码:
{dede:field.name/} <!-- 输出文章标题 -->
<hr>
<p>当前文章的直接上级栏目ID是:<strong><?php echo $typeid; ?></strong></p>
如何使用:
- 打开您的文章内容页模板文件
article_article.htm。 - 在需要显示ID的地方,直接使用
<?php echo $typeid; ?>即可。
综合应用:如何根据栏目ID进行判断和操作?
通常我们判断栏目ID是为了实现不同的功能,比如显示不同的广告位、调用不同的推荐内容、或者给不同栏目的文章页套用不同的CSS样式。
这里给出几个最实用的场景示例:
场景1:判断顶级栏目ID,并显示不同的内容
假设您的“新闻”栏目ID是 1,“产品”栏目ID是 2,您想在文章页根据顶级栏目显示不同的文字提示。
{dede:field.name/}
<hr>
<!-- 使用方法一获取顶级栏目ID进行判断 -->
{dede:field.typeid runphp='yes'}
$tid = @me;
if($tid == 1) {
@me = "<p class='tip'>您正在阅读的是【新闻】栏目的文章。</p>";
} elseif($tid == 2) {
@me = "<p class='tip'>您正在阅读的是【产品】栏目的文章。</p>";
} else {
@me = "<p class='tip'>通用提示信息。</p>";
}
{/dede:field.typeid}
<!-- 这里是文章正文 -->
{dede:field.body/}
代码解释:
{dede:field.typeid runphp='yes'}: 我们给typeid标签加上了runphp='yes'属性,这意味着PHP代码可以在这里执行。$tid = @me;:@me在runphp中代表标签本身的原始值,也就是栏目ID,我们先把它存入$tid变量。if($tid == 1) { ... }: 然后我们进行判断,$tid等于 1,就执行@me = "...",这里的@me代表整个标签最终输出的内容。else if和else是备选方案。- 根据判断结果,输出不同的HTML提示。
场景2:根据栏目ID调用不同的推荐文章
假设您想在“新闻”栏目下的文章页,调用“新闻”栏目的最新文章;在“产品”栏目下的文章页,调用“产品”栏目的最新文章。
{dede:field.name/}
<hr>
<!-- 文章正文 -->
{dede:field.body/}
<hr>
<h3>相关推荐</h3>
<!-- 使用方法一获取顶级栏目ID,并作为调用参数 -->
<ul>
{dede:arclist titlelen='30' row='5' typeid='{dede:field.typeid/}'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</ul>
代码解释:
- 我们在
{dede:arclist}标签的typeid属性中,直接嵌套了{dede:field.typeid/}。 - DedeCMS解析模板时,会先计算出
{dede:field.typeid/}的值(比如1),然后将这个值传递给{dede:arclist}的typeid属性。 - 最终的效果就是,
arclist会调用当前文章所在顶级栏目下的5篇最新文章。
总结与最佳实践
| 需求 | 推荐方法 | 代码示例 | 说明 |
|---|---|---|---|
| 获取顶级栏目ID | 模板标签 | {dede:field.typeid/} |
最常用,代码简洁,推荐用于绝大多数场景。 |
| 获取直接上级栏目ID | PHP变量 | <?php echo $typeid; ?> |
当需要获取非顶级栏目ID时使用。 |
| 在模板中进行逻辑判断 | 方法一 + runphp |
{dede:field.typeid runphp='yes'}...{/dede:field.typeid} |
最灵活的模板内判断方式,功能强大。 |
| 将ID作为参数传递给其他标签 | 嵌套调用 | {dede:arclist typeid='{dede:field.typeid/}'} |
实现动态调用,如调用相关栏目内容。 |
重要提示: 无论使用哪种方法,请确保您的模板文件没有被缓存,如果修改后看不到效果,请登录DedeCMS后台,点击 “系统” -> “一键更新网站”,然后选择 “更新HTML”,并勾选 “选择所有” 进行更新,这会清除缓存并重新生成所有页面。
希望这份详细的指南能帮助您在DedeCMS文章页中自如地判断和使用栏目ID!
