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)’ /}标签调用该函数。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1218118.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复