Hi 您目前尚未登陆
请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

上官雨伦

2006年接触 Discuz。原Discuz! Support Team 开发团队成员、New.Discuz! Support Team 开发团队负责人,致力于网页前端设计。曾任职河北省张家口市职业技术学院教师。现任职于北大青鸟张家口校区讲师。

任意页面制作导航高亮效果 heatlevel

2018-02-10 22:49:47 发布

Discuz /[教程] 1879 4 0

上官雨伦Writer

张家口市 | 博主、教师

92

主题

102

帖子

102

积分

Admin

Rank: 16

积分
102
发表于 2018-2-10 22:49 | 显示全部楼层 |阅读模式 [离线请留言]
    这个效果就是discuz默认模板中,导航部分的一个高亮效果。
1.png
    简单的来说,就是在当前页面时,当前导航为高亮。

在这里总结出了4种在discuz中的做法。其中重点在于第三、第四种。

第一种(discuz自带,仅限用于主导航)
<!--{eval $mnid = getcurrentnav();}-->
getcurrentnav() 是discuz自己封装的一个函数,而这一段是获取当前页面位置。

第二种
{if $do=='wall'} class="a"{/if}
这种方式局限性比较大。不推荐使用

第三种
{if $_G['**']=='**'}class="a"{/if}
这里其实用到的就是get方式,来get地址栏中的参数。比如一下2段地址
  1. <li{if $_G['do']=='doing'}class="a"{/if}><a href="home.php?mod=space&uid=$space[uid]&do=doing&view=me&from=space">{lang doing}</a></li>
  2. <li{if $_G['do']=='blog'}class="a"{/if}><a href="home.php?mod=space&uid=$space[uid]&do=blog&view=me&from=space">{lang blog}</a></li>
复制代码
   我们既然是要做当前页面的高亮,那么首先需要注意的一点就是找列表中 href 的不同之处。
    以上面的这段为例,其他的参数都是一致的,唯独 do 的参数不一致,那么我们就需要去 get 这个 do 的参数,来区分当前页面是哪一个。这样,当我们访问的页面地址栏中有 do=doing 时,父级的li中 就会多出一个class="a"。
当然这里可以get地址栏中的任意一个参数,前提是所有 a 标签中的 href 里,必须都包含。

第四种
如果需要高亮当前导航的地址中,没有像第三种所举例的这些参数,例如:
../forum.php
../home.php
那么这里就需要用到 $_G['basescript'] 这个变量了。比如:
  1. <li{if $_G['basescript']=='forum'}class="a"{/if}><a href="http://www.688576.com/forum.php">论坛</a></li>
  2. <li{if $_G['basescript']=='home'}class="a"{/if}><a href="http://www.688576.com/home.php">家园</a></li>
复制代码

0 使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

还是第一次 [离线请留言]Member 2018-9-16 16:17

请教一个问题,那么  www.xxxx.ko123/dfsdfsdf/     这种形式的如何判断呢?

还是第一次 [离线请留言]Member 2018-9-16 16:59

discuz 如何判断当前帖子页面属于那个版块

还是第一次 [离线请留言]Member 2018-9-16 17:03

还是第一次 发表于 2018-9-16 16:17
请教一个问题,那么  www.xxxx.ko123/dfsdfsdf/     这种形式的如何判断呢?

这个问题我知道怎么解决了,那么www.xxx.com  如何判断是首页呢?

上官雨伦Writer [离线请留言]Admin 2018-9-17 02:29

还是第一次 发表于 2018-9-16 17:03
这个问题我知道怎么解决了,那么www.xxx.com  如何判断是首页呢?

简单的办法就是用PHP获取URL,然后再判断是否为空