dede文章页如何精准判断当前栏目ID?

99ANYc3cd6
预计阅读时长 12 分钟
位置: 首页 DEDE建站 正文

使用DedeCMS模板标签(推荐)

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

dede文章页判断栏目id
(图片来源网络,侵删)

核心标签:{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>

如何使用:

  1. 打开您的文章内容页模板文件 article_article.htm
  2. 在需要显示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;: @merunphp 中代表标签本身的原始值,也就是栏目ID,我们先把它存入 $tid 变量。
  • if($tid == 1) { ... }: 然后我们进行判断,$tid 等于 1,就执行 @me = "...",这里的 @me 代表整个标签最终输出的内容。
  • else ifelse 是备选方案。
  • 根据判断结果,输出不同的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!

-- 展开阅读全文 --
头像
dede怎么添加图片不显示
« 上一篇 02-11
c语言 十进制转二进制 函数
下一篇 » 02-11

相关文章

取消
微信二维码
支付宝二维码

目录[+]