织梦默认{dede:field name='typename' /}标签只能获取当前栏目名称,不能获取当前栏目下的顶级栏目名称。
下面教大家两种方法来实现。
第一种方法
第一步:在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'];
}
}
第二步:在栏目或文章模版文件调用方法如下
{dede:field name='typeid' function="GetTopTypename(@me)" /}
第二种方法
第一步:修改 include/helpers/extend.helper.php文件的最后加入以下代码
/* 获取顶级栏目相关信息
*
* @access public
* @param string $tid 栏目id
* @param string $field栏目字段
* @return string
*/
if ( ! function_exists('getToptype'))
{
function getToptype($tid,$field)
{
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)
{
$topid = $tid;
}
else
{
$topid = GetTopid($cfg_Cs[$tid][0]);
}
$row = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id=$topid");
if($field=='id') return $topid;
if($field=='typename') return $row['typename'];//栏目名称
if($field=='typeurl') return GetOneTypeUrlA($row);//栏目链接
if($field=='typenamedir') return $row['typenamedir'];//栏目英文名称
if($field=='seotitle') return $row['seotitle'];//栏目SEO标题
if($field=='description') return $row['description'];//栏目描述
if($field=='content') return $row['content'];//栏目内容
}
}
第二步:在栏目或文章模版文件调用方法如下
栏目名称:{dede:field.typeid function="gettoptype(@me,typename)"/}
栏目链接:{dede:field.typeid function="gettoptype(@me,typeurl)"/}
栏目英文名称:{dede:field.typeid function="gettoptype(@me,typenamedir)"/}
栏目SEO标题:{dede:field.typeid function="gettoptype(@me,seotitle)"/}
栏目描述:{dede:field.typeid function="gettoptype(@me,description)"/}
栏目内容:{dede:field.typeid function="gettoptype(@me,content)"/}