织梦文章页如何获取当前栏目名称?

99ANYc3cd6
预计阅读时长 10 分钟
位置: 首页 织梦建站 正文

使用全局变量 $typename (最简单、最推荐)

这是最直接、最简单的方法,适用于绝大多数情况,织梦在文章页会自动定义一个全局变量 $typename,它直接存储了当前文章所属栏目的名称。

适用场景:

  • 仅需获取栏目名称。
  • 99% 的文章页需求都可以用此方法解决。

代码示例:

在你的 article_article.htm 模板文件中,直接使用以下代码即可:

<p>本文所属栏目:<strong>{dede:field name='typename'/}</strong></p>

或者使用PHP代码块:

<p>本文所属栏目:<strong><?php echo $typename; ?></strong></p>

代码解释:

  • {dede:field name='typename'/} 是织梦的标签,用于获取当前文章的 typename 字段值。
  • $typename 是PHP变量,两者效果完全一样,标签形式更符合织梦模板的书写习惯。

使用 {dede:type} 标签 (最灵活、功能最强)

当你不仅需要栏目名称,还需要获取栏目的其他信息(如栏目链接、栏目ID、栏目简介等)时,{dede:type} 标签是最佳选择,它会查询当前文章所属的栏目信息,并在标签内循环输出。

适用场景:

  • 需要同时获取栏目名称和栏目链接。
  • 需要获取栏目的其他任意属性。

代码示例:

<p>
  本文所属栏目:
  <strong>
    {dede:type}
    <a href="[field:typelink/]">[field:typename/]</a>
    {/dede:type}
  </strong>
</p>

代码解释:

  • {dede:type}...{/dede:type}:这是一个单记录查询标签,用于获取当前文章的栏目信息。
  • [field:typename/]:在 {dede:type} 标签内,使用 [field:属性名/] 来获取栏目的属性。typename 就是栏目名称。
  • [field:typelink/]:获取栏目的完整链接地址。
  • 上面的代码会生成类似“本文所属栏目:网站动态”的效果。

如何获取其他栏目属性? {dede:type} 标签可以获取栏目的所有字段,只需将 typename 换成你想要的字段名即可,常用字段包括:

  • id:栏目ID
  • typename:栏目名称
  • typedir:栏目目录(不带 )
  • typelink:栏目完整链接
  • description:栏目简介
  • seotitle:栏目SEO标题

示例:获取栏目ID和简介

{dede:type}
栏目ID: [field:id/] <br>
栏目名称: [field:typename/] <br>
栏目简介: [field:description/] <br>
{/dede:type}

使用SQL查询 (最底层、最灵活)

如果你需要在PHP代码块中进行复杂的逻辑判断,或者 {dede:type} 标签无法满足你的需求时,可以直接执行SQL查询来获取栏目信息。

适用场景:

  • 在PHP代码块中结合 if/else 等逻辑进行判断。
  • 需要跨表查询或复杂条件筛选。
  • 不使用标签,完全用PHP代码实现。

代码示例:

在模板文件中使用 <?php ... ?> 代码块。

<?php
  // 1. 获取当前文章的栏目ID
  $arcID = $id; // $id 是当前文章的ID,全局变量
  // 2. 查询文章表,获取栏目ID
  $query = "SELECT typeid FROM `#@__archives` WHERE id = $arcID";
  $row = $dsql->GetOne($query);
  $typeid = $row['typeid'];
  // 3. 如果栏目ID存在,则查询栏目表获取栏目名称
  if($typeid){
    $query2 = "SELECT typename FROM `#@__arctype` WHERE id = $typeid";
    $row2 = $dsql->GetOne($query2);
    $typename = $row2['typename'];
  }
?>
<p>本文所属栏目:<strong><?php echo $typename; ?></strong></p>

代码解释:

  • $id:织梦全局变量,代表当前文章的ID。
  • $dsql:织梦的数据库操作对象,用于执行SQL查询。
  • #@__:这是织梦的前缀替换符,会自动替换为你后台设置的数据库表前缀(如 dede_)。
  • GetOne():执行查询并返回第一条结果(关联数组形式)。
  • 这种方法最灵活,但代码量也最多,容易出错,不推荐在简单需求下使用。

总结与推荐

方法 优点 缺点 推荐度
{dede:field name='typename'} 代码最简单,性能最好 只能获取名称,无法获取其他信息 ★★★★★ (首选)
{dede:type} 功能最强大,灵活,可获取栏目所有信息 代码比方法一稍长 ★★★★☆ (需要链接或更多信息时)
SQL查询 最灵活,可结合PHP逻辑 代码复杂,容易出错,性能略低 ★★☆☆☆ (特殊需求时使用)

给你的建议:

  • 如果只需要显示栏目名称,请毫不犹豫地使用 方法一
  • 如果需要同时显示栏目名称和链接,请使用 方法二
  • 除非有特殊且复杂的需求,否则尽量避免使用 方法三

希望这些方法能帮助你解决问题!

-- 展开阅读全文 --
头像
dede手机站首页不更新,怎么办?
« 上一篇 01-22
织梦后台模板为何无法使用?
下一篇 » 01-22

相关文章

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

目录[+]