DEDECMS二级树菜单

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树菜单。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值