欢迎访问码农素材网

QQ交流群:569605755

首页 > 网站源码 > 帝国cms帝国cms

帝国cms中导航选中样式的多种修改方法

作者:码农站长  来源:  浏览:  发布时间:2018-04-18

 如何让帝国此cms中的导航显示一个高亮的选中状态,本文介绍了四种不同情况的使用方法:

 

<?php
    $i=0;
    if($GLOBALS[navclassid]==""){
        echo  '<li class="active"><a href="[!--news.url--]" >首页</a></li>';
        }
    else {
        echo  '<li><a href="[!--news.url--]" >首页</a></li>';
        }
?>
[e:loop={"select classid,classname from {$dbtbpre}enewsclass where bclassid=0 order by myorder,classid desc",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="class='active'";
}
}
?>
<tr>
<li <?=$class?>><a href="<?=$classurl?>"><?=$bqr[classname]?></a></li>
</tr>
[/e:loop]


<!--头部导航结束--> 


======================================


class=active是高亮的css

这个代码只会显示一级栏目,因此适用于一级栏目导航。

 

还有一种方式,逻辑比较复杂,不过也挺实用的:

1、打开 /e/class/userfun.php 文件
加入以下函数代码:


//取得顶级栏目ID函数


function user_GetTopBclassid($classid){
global $class_r;
$fr=explode('|',$class_r[$classid][featherclass]);
$topbclassid=$fr[1]?$fr[1]:$classid;//取得第一级栏目id
return $topbclassid;
}


2、使用这个代码可以调用出当前一级栏目ID


<?=user_GetTopBclassid($GLOBALS[navclassid])?>


获取到一级栏目ID就好办了。
3、在自定义导航栏目代码时,可以这样写:


<li id="nav-1">CMS集中营</li>
<li id="nav-2">JS代码</li>
<li id="nav-3">帝国CMS教程</li>


这其中的这个数字就是一级栏目ID,把ID写进去。
4、然后在模板页面加上CSS代码:


<style type="text/css">
#nav-<?=user_GetTopBclassid($GLOBALS[navclassid])?> {color:#F00;}
</sytle>


原理就是,CSS代码中自动获取当前栏目一级栏目ID,就正好跟栏目里对上了。
如打开的是 帝国CMS教程 栏目,CSS代码就如下:


<style type="text/css">
#nav-3 {color:#F00;}
</sytle>

==========================

这种方式是要把导航的id都以数字形式明明然后判断当前栏目的id寻找相对应的数字改变样式。

还有,当使用自定义页面的时候,导航高亮的方法:

 

[e:loop={'select id,path,title from [!db.pre!]enewspage where classid=1 order by id',20,24,0}]
<?php
$pageurl=$public_r['newsurl'].str_replace('../../','',$bqr['path']);
$css='pagecss';
if($classid=='page'.$bqr[id])
{
        $css='selfpagecss';
}
?>
<li class="<?=$css?>"><a href="<?=$pageurl?>"><?=$bqr[title]?></a></li>
[/e:loop]

===================================

还有一种方法,和本文中介绍的第一种方法类似,也是本人个人比较喜欢的一种方式

打开 /e/class/userfun.php 文件,在  ?> 内添加以下代码
function currentPage($classid,$thisid){
        global $class_r;
        $fr=explode('|',$class_r[$classid][featherclass]);
        $topbclassid=$fr[1]?$fr[1]:$classid;//取得第一级栏目id
        if ($topbclassid==$thisid) {
                  echo "class='cur'";
                }
        else {
        }
}

模板里使用以下代码调用:
<ul>
<li <?php  if(empty($GLOBALS[navclassid])){echo "class='cur'";} ?>><a id="nav-hover0" href="[!---news.url--]">首页</a></li>
<?php
$i=0;
$path="";
?>
[e:loop={'select classid,classname,classpath,wburl from [!db.pre!]enewsclass where bclassid=0 order by classid',0,24,0}]
<?php
  $i=$i+1;
  $path=$public_r[newsurl].$bqr[classpath];
  if(!empty($bqr[wburl])){
      $path=$bqr[wburl];
  }
?>
<li <?=currentPage($GLOBALS[navclassid],$bqr[classid])?>>
<a  id="nav-hover<?=$i?>" href="<?=$path?>" title="<?=$bqr[classname]?>" target="_self" ><?=$bqr[classname]?></a>
</li>
[/e:loop]
</ul>

这就是在帝国cms中常遇到的几种让当前栏目导航显示高亮的选中状态的方法

 

上一篇:返回列表下一篇:帝国CMS如何用tags调用相关文章

评论:

评论这篇文章:
验证码: