dedecms建站

当前位置/ 首页/ DE教程/dedecms建站/ 正文

DedeCMS调用一二级菜单代码

DedeCMS调用一二级菜单代码:

    <div id="navMenu">
     <ul>
       <li><a href='{dede:global.cfg_cmsurl/}/'><span>主页</span></a></li>
       {dede:channel type='top' row='10' currentstyle="<li class='hover'><a href='~typelink~' ~rel~><span>~typename~</span></a></li>"}
       <li><a href='[field:typeurl/]' [field:rel/]><span>[field:typename/]</span></a></li>
       {/dede:channel}
     </ul>
    </div>

以上是官方演示默认模板调用一级菜单的代码,也有网友衍生出调用二级方法:

{dede:channelartlist typeid='top' cacheid='channelsonlist'}<ul id="dropmenu{dede:field.typeid/}" class="dropMenu">
  {dede:channel type='son' noself='yes'}  <li><a href="[field:typelink/]">[field:typename/]</a></li>
  {/dede:channel}
</ul>
{/dede:channelartlist}
但是,总体来说DEDE二级导航做起来比较麻烦,不能能灵活使用,而我们需要让它变得灵活起来,来满足我们的各种需求。
 
下面BOXCMS在这里与大家分享灵活自定义调用二级导航的代码:
{dede:channelartlist row=10 typeid='top'}
<li><a class="hide" href="{dede:field name='typeurl'/}" title="{dede:field name='typename'/}">{dede:field name='typename'/}</a>
{dede:field name='id' runphp='yes'}
global $dsql;
$sql = "Select typedir,typename from dede_arctype where reid=".@me." order by sortrank limit 0,10";
$dsql->SetQuery($sql);//将SQL查询语句格式化
$dsql->Execute();//执行SQL操作
$ns = $dsql->GetTotalRow();
if($ns>0){
 //通过循环输出执行查询中的结果
 $xinfo='<ul>';
 while($row = $dsql->GetArray()){
  $xinfo.='<li><a href="'.str_replace('{cmspath}','',$row['typedir']).'">'.$row['typename'].'</a></li>';
 }
 $xinfo.='</ul>';
 @me=$xinfo;
}else{@me='';}
{/dede:field}
</li>
{/dede:channelartlist}

这样,采用查询数据库,自定义SQL的方式做到一二级菜单自定义调用。