DEDE居然不能根据栏目ID调用其对应的二级栏目,这样就给做二级栏目带来了难题。在网搜索了一下,一是简单的标签方法调用根栏目下的二级栏目,不能指定ID,二是用SQL自己调用数据。
我的做法就是 写一个方法,然后在模板里用PHP标签执行。
function menu_fs($id){
$dsql = new DedeSql(false);
$dsql->SetSql('select * from #@__arctype where reid='.$id);
$dsql->Execute();
$menus_fs=array();
while($row=$dsql->GetArray()){
//print_r($row['typename']);
$menus_fs['a'][$row['id']]=array($row['id'],$row['reid'],$row['typename'],$row['typedir']);
$dsql2 = new DedeSql(false);
$dsql2->SetSql('select * from #@__arctype where reid='.$row['id']);
$dsql2->Execute();
while($row2=$dsql2->GetArray()){
$menus_fs['a'][$row['id']][4]='t2';
$menus_fs['b'][$row['id']][$row2['id']]=array($row2['id'],$row2['reid'],$row2['typename'],$row2['typedir']);
}
}
return $menus_fs;
}
这是我写的方法,本人能力有限,程序写的不好,不过这个方法管用,这是树菜单,还可以写成下拉菜单,只要把ID下的栏目取出就行。
这个方法我写在include/extend.func.php下的,
可以在common.inc.php下调用,加到最下面
$m_fs=menu_fs();
或者在模板页里调用
{dede:php}
$m_fs=menu_fs();
foreach($m_fs['a'] as $key=>$value){
echo "<li><h2><img src='/images/t3.gif' width='3' height='5' /><a href='".substr($value[3],9)."' id='$value[0]' class='$value[4]'>$value[2]</a></h2>";
$mspan="<span id='$value[0]c' style='display:none' class='mdis'>";
foreach($m_fs['b'][$value[0]] as $va){
$mspan.="<h3><img src='/images/t3.gif' width='3' height='5' /><a href='".substr($va[3],9)."'>$va[2]</a></h3>";
}
$mspan.="</span>";
if($m_fs['b'][$value[0]]==''){$mspan='';}
echo $mspan;
echo "</li>";
}
{/dede:php}
for循环就是把数据根据自己的要求输出出来,如果要做树菜单还要写自己JS,或者找一个现成的JS树菜单。