POST TIME:2019-05-22 23:57
由于功能需要,想在頁面中獲得當前欄目所屬的頂級欄目的權重和二級欄目的權重(用于導航條自動高亮)
在網上搜到了一些朋友提供的方法,但是可能是版本更新的緣故導致不能用了(當時數據庫中用topid標注頂級欄目id,用reid標注上級欄目id,但是在5.7版本中經確認兩者已合一表示上級欄目id)
根據別人的方法,修改如下,5.7版可用
在include/extend.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
{
return GetTopTypeName($row['topid']);
}
}
//獲取所屬頂級欄目的sortrank
function GetTopTypeSortrank($id)
{
global $dsql;
$row = $dsql->GetOne(“SELECT sortrank,topid FROM dede_arctype WHERE id= $id”);
if ($row['topid'] == ’0′)
{
return $row['sortrank'];
}
else
{
return GetTopTypeSortrank($row['topid']);
}
}
//獲取二級欄目名
function GetSecondTypeName($id)
{
global $dsql;
$row = $dsql->GetOne(“SELECT typename,topid FROM dede_arctype WHERE id= $id”);
if ($row['topid'] == ’0′) //如果本欄目就是頂級欄目,即不存在二級欄目,則返回本級欄目
{
return $row['typename'];
}
else
{
$row2 = $dsql->GetOne(“SELECT typename,topid FROM dede_arctype WHERE id= $row[topid]“);
if ($row2['topid'] == ’0′) //如果上級欄目就是頂級欄目,即本級欄目就是二級欄目,則返回本級欄目
{
return $row['typename'];
}
else
{
return GetSecondTypeName($row['topid']);
}
}
}
//獲取二級欄目Sortrank
function GetSecondTypeSortrank($id)
{
global $dsql;
$row = $dsql->GetOne(“SELECT sortrank,topid FROM dede_arctype WHERE id= $id”);
if ($row['topid'] == ’0′)
{
return $row['sortrank'];
}
else
{
$row2 = $dsql->GetOne(“SELECT sortrank,topid FROM dede_arctype WHERE id= $row[topid]“);
if ($row2['topid'] == ’0′) //如果上級欄目就是頂級欄目,即本級欄目就是二級欄目,則返回本級欄目
{
return $row['sortrank'];
}
else
{
return GetSecondTypeSortrank($row['topid']);
}
}
}
頁面調用方法:{dede:field name=’typeid’ runphp=’yes’}@me=GetTopTypeName(@me)-1;