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)" /} 頂級欄目url
dede調用頂級欄目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'];}
這樣,這條語句在頂級欄目還是子欄目,都可以調用了。