ecms class
帝国CMS的一级栏目区分和当前二级栏目而显示不同样式。

在实际项目中,遇到栏目一二级栏目较多,且要判断是否是高亮当前栏目,之前一直都是单独调用对应的子栏目,为了实现效果会出现好几个模板,为解决这个问题,特搜索并结合之前的方法(灵动标签调用栏目,可定义当前栏目的class样式),调整了一下。

如下图,所在当前一级栏目是展开状态,而且都在当前二级栏目是高亮状态。其他一级栏目是收缩状态。

ecms menu

使用如下代码,可实现:

[e:loop={"select classid,classname,islast from {$dbtbpre}enewsclass where bclassid='0' and showclass=0 order by myorder,classid ASC limit 11",0,24,0}]
<?php
$classurl=sys_ReturnBqClassname($bqr,9); //取得栏目地址
$class=""; //有子栏目时一级栏目的样式
if($GLOBALS[navclassid])
{
$fcr=explode('|',$class_r[$GLOBALS[navclassid]][featherclass]);
$topbclassid=$fcr[1]?$fcr[1]:$GLOBALS[navclassid];//取得当前栏目的一级栏目ID
if($bqr[classid]==$topbclassid)
{
$class=" on"; //当前栏目高亮显示
}
}
elseif($public_r[home]==1)
{
$class="";
}
?>
                    <div class="list<?=$class?>">
                        <div class="first_cate son">
                            <a href="<?=$classurl?>" class="category_<?=$bqr[classid]?>" title="<?=$bqr[classname]?>"><?=$bqr[classname]?></a>
                            <div class="border"></div>
                        </div>
<?php
if(!$bqr[islast]) //判断是否终极栏目
{
?>
                        <div class="son_cate">
    <?php
    //取得栏目下的子栏目
    $newsclass=$empire->query("select classid,classname from ".$dbtbpre."enewsclass where bclassid=".$bqr[classid]." order by myorder,classid asc limit 11");
    while($classr=$empire->fetch($newsclass))
    {
        $classrurl=sys_ReturnBqClassname($classr,9); //取得子栏目地址
        $classrname="";
        if($classr[classid]==$GLOBALS[navclassid])
        {
        $classrname=" on";
        }
        ?>
                            <div class="item category_<?=$classr[classid]?><?=$classrname?>"><a href="<?=$classrurl?>" class="text-over block" title="<?=$classr[classname]?>"><?=$classr[classname]?></a></div>
    <?php
    }
    ?>
                        </div>
<?php
}
?>
                    </div>
[/e:loop]

其中,可不调用隐藏设置的栏目:and showclass=0 //0为显示,1为不显示
and classid<>25为排除指定栏目