Skip to main content
 当前位置:seo培训 > 织梦cms >

dedecms织梦栏目页/文章详情页获取顶级栏目名称及链接url方法

2021-03-23 16:29:001462SEOer

我们使用dedecms织梦开发网站时,经常会碰到需要调用当前顶级栏目名称,而织梦默认{dede:field name='typename' /} 只可以获取当前栏目的名称,而不是当前栏目顶级栏目名称。

方法一:

 

{dede:field.typeid runphp='yes'}

$ID = @me; $sql = "SELECT * FROM `dede_arctype` WHERE id=$ID";

$query = mysql_query($sql);$row=mysql_fetch_array($query); 

$relID = "$row[reid]"; $topID="$row[topid]"; 

if($relID == 0) {@me = $row[typename];}

else{$sql = "SELECT `typename` FROM `dede_arctype` WHERE id=$topID";

$query = mysql_query($sql);$row=mysql_fetch_array($query); 

@me = $row[typename];}{/dede:field.typeid}


方法二(推荐):

修改 include/helpers/extend.helper.php 结尾增加:
 

 /**

* 获取一个类目的顶级栏目

* @param string $tid 栏目 ID

* @return string

*/

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)

{

$topid = $tid;

}

else

{

$topid = GetTopid($cfg_Cs[$tid][0]);

}

$row = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id=$topid");

$toptypename = $row['typename'];

$toptypeurl = $topid;

if($action=='id') return $topid;

if($action=='name') return $toptypename;

if($action=='link') return GetOneTypeUrlA($row);

}

}

织梦顶级栏目链接,名称及 id 调用代码

{dede:field.typeid function="gettoptype(@me,id)"/}   //id

{dede:field.typeid function="gettoptype(@me,name)"/} //名称

{dede:field.typeid function="gettoptype(@me,link)"/} //链接

方法三(推荐):
打开include/helpers/extend.helper.php,添加一个函数:

 /**

*  获取指定栏目id的顶级栏目的名称

* @return     string

*/

if ( ! function_exists('getTopChannelName'))

{

function getTopChannelName($id) {

global $dsql;

$typeinfo = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id='{$id}'");

 if($typeinfo['reid']==0) return $typeinfo['typename'];

else return getTopChannelName($typeinfo['reid']);

}

}
在列表页这么使用:{dede:field name='id' function='getTopChannelName(@me)'/}
 
在内容页这么使用:{dede:field name='typeid' function='getTopChannelName(@me)'/}
 
附带获取顶级栏目的url,打开include/helpers/extend.helper.php,添加一个函数:
/**

 *  获取指定栏目id的顶级栏目的url

* @return     string

*/

if ( ! function_exists('getTopChannelUrl'))

{

        function getTopChannelUrl($id) {

           global $dsql;

                $typeinfo = $dsql->GetOne("SELECT * FROM `dede_arctype` WHERE id='{$id}'");

                if($typeinfo['reid']==0) return GetOneTypeUrlA($typeinfo);

                else return getTopChannelUrl($typeinfo['reid']);

        }

        }

在列表页这么使用:{dede:field name='id' function='getTopChannelUrl (@me)'/}

在内容页这么使用:{dede:field name='typeid' function='getTopChannelUrl(@me)'/}