Dedecms織夢調用當前頂級欄目名稱、ID、url實現方法
織夢調用上級欄目ID:{dede:field.reid/}
dedecms獲取調用當前欄目頁上一級欄目的名稱: {dede:field name='typename' /}
織夢調用頂級欄目ID:{dede:field.typeid function='GetTopid(@me)'/}
織夢Dedecms獲取頂級欄目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
結尾增加 :
**
* 獲取一個類目的頂級欄目
* @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 `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);
}
}自定義函數方式調用:
在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'];
}
}備注:若頂級欄目沒有綁定二級域名,所調用的字段應該是 sitepath 故代碼應如下所示:
//獲取頂級欄目url
function GetTopTypeurl($id){
global $dsql;
$row = $dsql->GetOne("SELECT sitepath,topid FROM dede_arctype WHERE id= $id");
if ($row['topid'] == '0'){
return $row['sitepath'];
}else{
$row1 = $dsql->GetOne("SELECT sitepath FROM dede_arctype WHERE id= $row[topid]");
return $row1['sitepath'];
}
}頂級欄目其他字段調用的function 函數仿照上面所示書寫即可。
同理可得獲取頂級欄目url方法 (當頂級欄目綁定二級域名時調用的字段為“ siturl”)
function GetTopTypeurl($id){
global $dsql;
$row = $dsql->GetOne("SELECT siteurl,topid FROM dede_arctype WHERE id= $id");
if ($row['topid'] == '0'){
return $row['siteurl'];
}else{
$row1 = $dsql->GetOne("SELECT siteurl FROM dede_arctype WHERE id= $row[topid]");
return $row1['siteurl'];
}
}在文章頁或者欄目列表頁調用時,在所要調用欄目名稱的位置加上下面這行代碼即可實現。
{dede:field name='typeid' function="GetTopTypename(@me)" /} 頂級欄目名
{dede:field name='typeid' function="GetTopTypeurl(@me)" /} 頂級欄目urldede調用頂級欄目ID 方法一:
{dede:field.typeid function="GetTopid(@me)"/}dede調用頂級欄目ID 方法二:
1、在所需要調用頂級欄目ID的地方,添加這段標簽語法
{dede:type}[feild:topid/]{/dede:type}2、修改源文件,找到include目錄下的taglib目錄下的type.lib.php。
找到這條語句
$row = $dsql->GetOne("Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
From `dede_arctype` where id='$typeid'");修改成為
$row = $dsql->GetOne("Select id,topid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
From `dede_arctype` where id='$typeid'");在 if(!is_array($row)) return ";
下一行添加
if( $row['topid']==0){$row['topid']=$row['id'];}這樣,這條語句在頂級欄目還是子欄目,都可以調用了。






