html,{dede:field name='topname'/},“
在dedecms模板中,调用当前栏目的上级栏目名称可以通过多种方法实现,以下是几种常见的方法:
方法一:使用自定义函数
1、定义函数:在include/common.func.php文件中添加以下代码来定义一个获取顶级栏目名称的函数:
function GetTopTypename($id) {
global $dsql;
$row = $dsql>GetOne("SELECT typename,topid FROM dede_arctype WHERE id= $id");
if ($row['topid'] == '0') {
return $row['typename'];
} else {
$row1 = $dsql>GetOne("SELECT typename FROM dede_arctype WHERE id= $row[topid]");
return $row1['typename'];
}
}
2、调用函数:在需要显示上级栏目名称的位置,使用以下标签调用该函数:
{dede:field name='typeid' function="GetTopTypename(@me)" /}
方法二:直接使用系统标签
1、获取当前栏目ID:通过以下标签获取当前栏目的ID:
{dede:field name='id' /}
2、获取上级栏目名称:使用以下标签获取上级栏目的名称:
{dede:field name='reid' function="GetParentCategoryNameByID(@me)" /}
GetParentCategoryNameByID是一个需要在include/extend.func.php文件中定义的函数,用于根据当前栏目ID获取上级栏目名称。
方法三:修改系统文件
1、找到文件:打开include/helpers/extend.helper.php和common.func.php文件。
2、添加代码:在extend.helper.php文件末尾添加以下代码以获取顶级栏目名称:


if ( ! function_exists('gettoptype'))
{
function gettoptype($tid,$action)
{
global $dsql,$cfg_Cs;
if(!is_array($cfg_Cs))
{
require_once(DEDEDATA."/cache/inc_catalog_base.inc");
}
if(!isset($cfg_Cs[$tid][0]) || $cfg_Cs[$tid][0]==0)
return "";
switch($action) {
case "id":
return $cfg_Cs[$tid][0];
case "name":
return $cfg_Cs[$tid][1];
case "link":
return '<a href="'.$cfg_Cs[$tid][2].'">'.$cfg_Cs[$tid][1].'</a>';
}
}
}
3、调用标签:在模板中需要显示上级栏目名称的位置,使用以下标签调用该函数:
{dede:field.typeid function="gettoptype(@me,name)" /}
FAQs
问题1:为什么在内容页无法获取到当前栏目的路径及名称?
答案:在dedecms中,{dede:field name=’arcurl’/}这个标签只能在内容页使用,而在栏目页则没有效果,如果需要在栏目页获取当前栏目的路径及名称,需要使用其他标签或方法。
问题2:如何获取当前栏目的父栏目名称?
答案:可以在include/extend.func.php文件中定义一个函数,如GetParentCategoryNameByID,用于根据当前栏目ID获取父栏目名称,然后在模板中使用{dede:field name=’id’ function=’GetParentCategoryNameByID(@me)’ /}标签调用该函数。




