100分请教无限级菜单问题!
clbo 2007-03-29 03:34:09 首先要对DEDECMS有一定了解哦。。。
$T=array();
function getchanneltree($id){
global $T;
if(!$GLOBALS['dbopen']){
$GLOBALS['ppsql'] = new DedeSql();
$GLOBALS['dbopen']=true;
}
$GLOBALS['ppsql'] -> SetQuery("Select * From #@__arctype where reID='$id' order by sortrank ASC");
$GLOBALS['ppsql'] -> Execute($id);
while ($row[$id] = $GLOBALS['ppsql'] -> GetArray($id)) {
$T[$row[$id]['ID']] = $row[$id];
getchanneltree($row[$id]['ID']);
}
return ;
}
function returnchanneltree($id){
getchanneltree($id);
global $T;
require_once(dirname(__FILE__)."/inc_channel_unit_functions.php");
$channeltree = "";
if(is_array($T)){
$pre = "";
$pid = 0;
foreach ($T as $key => $value){
$channellink = GetTypeUrl($value['ID'],$value['typedir'],$value['isdefault'],$value['defaultname'],$value['ispart'],$value['namerule']);
if($value['reID']!=0&&$value['reID']!=$pid){
$pre .="|--";
$pid = $value['reID'];
}
if($value['reID']==0){
$pre = "";
}
$channeltree .= $pre."<a href=$channellink>$value[typename]</a><br />";
}
}
return $channeltree;
}
把这段放到 inc_functions.php 末尾
调用方法:
{dede:field name=field runphp='yes'}@me=returnchanneltree(0);{/dede:field}
这段代码只能处理两级的菜单,三级和三级以上就会出错!
请各位帮忙看看!
谢谢了!!!