dede织梦获取顶级栏目id或typeid

网络整理 - 06-26

dedecms如何获得当前页面或栏目的顶级栏目的的栏目id或者叫typeid和topid。

首先声明,本文获取的是顶级栏目id,不是父栏目的父栏目id。

[field:typeid runphp="yes"] $ID = @me; global $dsql; $sql = "SELECT typename,topid FROM `dede_arctype` WHERE id=$ID"; $row = $dsql->GetOne("SELECT typename,topid FROM standard_arctype WHERE id= $ID "); if ($row['topid'] == '0') { @me=$row['typename']; } else { $row1 = $dsql->GetOne("SELECT typename FROM dede_arctype WHERE id= $row[topid]"); @me= $row1['typename']; } [/field:typeid]

或者使用{dede:field name='typeid' runphp="yes"} {/dede:field} 标签,里面内容一样。看情况选择。

也可以直接写在/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 { $row1 = $dsql->GetOne("SELECT typename FROM `dede_arctype` WHERE id= $row[topid]"); return $row1['typename']; } }

调用方式二选一,看情况选择:

{dede:field name='typeid' function="GetTopTypename(@me) /} [field:typeid function="GetTopTypename(@me)" /]

如果表前缀已更改,请记得更改表前缀才能正常使用。本代码亲测绝对可用。

另外,如果您将普通栏目移动过为顶级栏目的话,其下的栏目的顶级栏目,数据库中,仍然是老的顶级栏目不会变。这是dede的一个小bug。请自行手动修改dede_arctype数据表中的topid数值。

dede织梦获取顶级栏目id或typeid