帝国模板之家为广大用户提供专业、一站式建站服务。

帝国cms教程

帝国cms教程栏目,提供精品建站,仿站,二次开发,安装,标签使用等图文教程,帮助建设和管理好你的帝国cms站点。

当前位置:首页 > 教程 > 帝国cms教程 > 正文

帝国cms调用三级栏目的方法

帝国模板之家 2020-08-21 帝国cms教程 评论

帝国cms有三级栏目如何调用,类似下图效果:

具体实现代码如下:

<?php
$sql=$empire->query('select classid,bclassid,classname,classpath,wburl,islast from '.$dbtbpre.'enewsclass  order by myorder, classid asc ');
for($i=1;$cr=$empire->fetch($sql);$i++)
{
    $r[$i]=$cr;//select出的数据储存到数组
}
 
for($i=1;$r[$i];$i++)
{
    if($r[$i][bclassid]==0)//选出一级栏目
    {
        echo '<dd><a href="'
        .($r[$i][classpath]==''?$r[$i][wburl]:'/'.$r[$i][classpath]).'/">'.$r[$i][classname].'</a>';
         
        if($r[$i][islast]==0&&$r[$i][wburl]=='')//选出非终极栏目
        {  
            echo "<ul>";
            for($j=1;$r[$j];$j++)//循环数组一次
                if($r[$j][bclassid]==$r[$i][classid] && $r[$j][islast]!=0)//选出二级栏目
                {
                    echo '<li ><a href="'
                    .($r[$j][classpath]==''?$r[$j][wburl]:'/'.$r[$j][classpath]).'/">'.$r[$j][classname].'</a>';
                }else{
                    if($r[$j][bclassid]==$r[$i][classid])//选出三级栏目
                    {
                        echo "<br>";
                        echo '<li id="lm2"><a href="'
                            .($r[$j][classpath]==''?$r[$j][wburl]:'/'.$r[$j][classpath]).'/">'.$r[$j][classname].':</a>';
                         
                      echo "<ul>";
                        for($k=1;$r[$k];$k++)//循环数组一次
                            if($r[$k][bclassid]==$r[$j][classid])
                                echo '<li><a href="'
                                .($r[$k][classpath]==''?$r[$k][wburl]:'/'.$r[$k][classpath]).'/">'.$r[$k][classname].'</a></li>';
                    echo "</ul>";
                    }
                }
                 
                echo "</li>";
             
        }
        echo '</dd>';
    }
}
?>

代码使用了三个循环来获取栏目。如果我们需要调更多级栏目呢?显然这个方法不是那么好用,下面我们封装了一个无限极栏目调用的方法。

在 e/class/userfun.php 我们定义一个函数,具体代码如下:

function dp_classmenu($bclassid,$i=0,$m=0){
    global $empire,$dbtbpre,$public_r;
    $bclassid=(int)$bclassid;
    $i=(int)$i;
    if(!$i){$i=1;}
    $d=$i;
    if($d>2){$d=2;}
    $st='';
    if($d>1&&$m==1){
        $st=' start';
    }
    $returnstr='';
    $i+=1;
    $m=0;
    $sql=$empire->query("select classid,classname,bclassid,islast,classpath from {$dbtbpre}enewsclass where bclassid='$bclassid' and wburl='' order by myorder,classid");
    while($r=$empire->fetch($sql)){
        $returnstr.='<li class="tm'.$d.$st.'">';
        $classurl=$public_r['newsurl'].$r['classpath'].'/';
        $m+=1;
        if($r['islast']){
            $qstr='<span class="facefont wj">&C</span>';
            $lian='';
            $hstr='';
 
        }else{
            $qstr='<span class="facefont wjj">&D</span>';
            $lian='class="lian"';
            $hstr='<span class="facefont hao">-</span>';
        }
        $returnstr.=$qstr.'<a href="'.$classurl.'" '.$lian.'>'.$exp.$r['classname'].'</a>'.$hstr;
        if(empty($r['islast']))
        {
            $moreclassstr=dp_classmenu($r['classid'],$i,$m);
            $returnstr.='<ul class="tmu2" style="display:none">'.$moreclassstr.'</ul>';
        }
        $returnstr.="</li>";
    }
    return $returnstr;
}

代码中的样式可以根据需求来修改。在模板中使用下面代码就可以调用了。

<?=dp_classmenu(0)?>

以上就是帝国cms调用三级栏目和无限极栏目调用的方法,希望对您有所帮助。

这世上无忧无虑的人,反而相对寿命会长点。

已有 位小伙伴发表了看法

欢迎 发表评论

  • 匿名发表

关于

帝国cms模板

网页插件

帝国模板之家 | www.moyouyouw.cn

本站所有模板/文章除标明原创外,均来自网络转载,版权归原作者所有,如果有侵犯到您的权益,请联系站长删除,谢谢! 寻找帝国cms模板首选帝国模板之家,用心做站,上线至今广受好评,值得信赖!

  • 交流群1:帝国cms交流群1
  • 交流群2:帝国cms交流群2
在线QQ 给我留言