首頁 >CMS教程 >DEDECMS >織夢怎麼呼叫目前頂級欄位名稱、ID、url

織夢怎麼呼叫目前頂級欄位名稱、ID、url

藏色散人
藏色散人原創
2019-12-17 10:22:562440瀏覽

織夢怎麼呼叫目前頂級欄位名稱、ID、url

織夢怎麼呼叫目前頂層欄位名稱、ID、url?

我們在用織夢範本做網站時,常常會碰到需要呼叫目前頂層欄位名稱,而織夢預設{dede:field name='typename' /} 只可以取得目前欄位頁上一級欄目的名稱,而不是目前欄位頂級欄位名稱。

推薦學習:織夢cms

在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)"/}  dedeyuan首推此方法,經過測試是可行的。

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'];}

這樣,這條語句在頂層欄目還是子欄目,都可以呼叫了

以上是織夢怎麼呼叫目前頂級欄位名稱、ID、url的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn