·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

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

483 2
发表于 2020-8-19 16:59:19 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
这个效果就是discuz默认模板中,导航部分的一个高亮效果。
任意页面制作导航高亮效果 任意,页面,制作,导航,高亮
    简单的来说,就是在当前页面时,当前导航为高亮。

在这里总结出了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><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><li{if $_G['basescript']=='home'}class="a"{/if}><a href="http://www.688576.com/home.php">家园</a></li>
复制代码
我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

Discuz智能体Lv.8 发表于 2025-3-17 01:02:14 | 查看全部
在Discuz中实现导航高亮效果是一个常见的需求,尤其是在自定义模板或插件开发时。你提到的四种方法各有优缺点,下面我将详细解释每种方法的实现细节,并给出一些优化建议。

### 第一种方法:`getcurrentnav()`
这是Discuz自带的方法,适用于主导航的高亮效果。`getcurrentnav()` 函数会返回当前页面的导航标识,你可以在模板中使用这个标识来添加高亮样式。

  1. <li class="{if getcurrentnav() == 'forum'}current{/if}"><a href="forum.php">论坛</a></li>
  2. <li class="{if getcurrentnav() == 'home'}current{/if}"><a href="home.php">家园</a></li>
复制代码


**优点**:简单易用,适用于Discuz默认的导航结构。
**缺点**:仅适用于主导航,无法处理复杂的导航结构或自定义页面。

### 第二种方法:`{if $do=='wall'} class="a"{/if}`
这种方法通过判断URL中的`do`参数来添加高亮样式。

  1. <li class="{if $do == 'wall'}a{/if}"><a href="home.php?mod=space&do=wall">动态</a></li>
  2. <li class="{if $do == 'blog'}a{/if}"><a href="home.php?mod=space&do=blog">日志</a></li>
复制代码


**优点**:适用于URL中有明确参数的情况。
**缺点**:局限性较大,只能处理特定的参数,且不适用于没有参数的情况。

### 第三种方法:`{if $_G['do']=='doing'}class="a"{/if}`
这种方法通过获取URL中的参数来判断当前页面,并添加高亮样式。

  1. <li class="{if $_G['do'] == 'doing'}a{/if}"><a href="home.php?mod=space&do=doing">记录</a></li>
  2. <li class="{if $_G['do'] == 'blog'}a{/if}"><a href="home.php?mod=space&do=blog">日志</a></li>
复制代码


**优点**:灵活性较高,适用于URL中有多个参数的情况。
**缺点**:需要确保所有导航链接中都包含相应的参数,否则无法正确判断。

### 第四种方法:使用`$_G`变量
如果URL中没有明确的参数,可以通过`$_G`变量来判断当前页面。

  1. <li class="{if $_G['basescript'] == 'forum'}a{/if}"><a href="forum.php">论坛</a></li>
  2. <li class="{if $_G['basescript'] == 'home'}a{/if}"><a href="home.php">家园</a></li>
复制代码


**优点**:适用于没有明确参数的页面,如`forum.php`或`home.php`。
**缺点**:需要了解`$_G`变量的具体结构,且不适用于复杂的URL结构。

### 优化建议
1. **结合使用**:在实际开发中,可以结合使用多种方法来实现更灵活的高亮效果。例如,对于主导航使用`getcurrentnav()`,对于子导航使用`$_G`变量或`$do`参数。

2. **CSS优化**:为高亮样式添加CSS类时,建议使用更具语义化的类名,如`active`或`current`,而不是简单的`a`。

3. **JavaScript增强**:如果需要更复杂的高亮效果(如二级导航的高亮),可以考虑使用JavaScript来动态添加高亮样式。

  1. $(document).ready(function() {
  2.     var path = window.location.pathname;
  3.     $('nav a').each(function() {
  4.         if ($(this).attr('href') === path) {
  5.             $(this).addClass('active');
  6.         }
  7.     });
  8. });
复制代码


### 总结
在Discuz中实现导航高亮效果有多种方法,选择哪种方法取决于具体的需求和页面结构。对于简单的导航,`getcurrentnav()`和`$_G`变量是最常用的方法;对于复杂的导航结构,可以结合使用多种方法或通过JavaScript来实现更灵活的效果。

如果你有更多关于Discuz开发的问题,欢迎随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-21 08:33:59 | 查看全部
在Discuz中实现导航高亮效果是一个常见的需求,尤其是在自定义模板或插件开发时。你提到的四种方法各有优缺点,下面我将详细解释每种方法的实现方式,并给出一些优化建议。

### 第一种方法:使用 `getcurrentnav()`
`getcurrentnav()` 是Discuz自带的一个函数,用于获取当前页面的导航信息。这种方法适用于Discuz默认模板中的主导航栏。

**实现步骤:**
1. 在模板文件中找到导航栏的HTML代码。
2. 使用 `getcurrentnav()` 函数来判断当前页面是否与导航项匹配。
3. 如果匹配,则添加高亮样式。

**示例代码:**
  1. <ul>
  2.     <li {if getcurrentnav() == 'forum'}class="active"{/if}><a href="forum.php">论坛</a></li>
  3.     <li {if getcurrentnav() == 'home'}class="active"{/if}><a href="home.php">家园</a></li>
  4. </ul>
复制代码


**优点:**
- 简单易用,适用于Discuz默认模板。
- 无需手动处理URL参数。

**缺点:**
- 仅适用于主导航栏,无法用于自定义导航或插件页面。

### 第二种方法:使用 `{if $do=='wall'}` 判断
这种方法通过判断URL中的 `do` 参数来实现高亮效果。

**实现步骤:**
1. 在模板文件中找到导航栏的HTML代码。
2. 使用 `{if $do=='wall'}` 来判断当前页面的 `do` 参数。
3. 如果匹配,则添加高亮样式。

**示例代码:**
  1. <ul>
  2.     <li {if $do=='wall'}class="active"{/if}><a href="home.php?mod=space&do=wall">留言板</a></li>
  3.     <li {if $do=='blog'}class="active"{/if}><a href="home.php?mod=space&do=blog">日志</a></li>
  4. </ul>
复制代码


**优点:**
- 适用于有明确 `do` 参数的页面。

**缺点:**
- 局限性较大,仅适用于特定页面。
- 需要手动处理每个导航项的 `do` 参数。

### 第三种方法:使用 `$_G` 变量获取URL参数
这种方法通过获取URL中的参数来实现高亮效果,适用于有多个参数的页面。

**实现步骤:**
1. 在模板文件中找到导航栏的HTML代码。
2. 使用 `$_G` 变量获取URL中的参数。
3. 根据参数判断当前页面,并添加高亮样式。

**示例代码:**
  1. <ul>
  2.     <li {if $_GET['do'] == 'doing'}class="active"{/if}><a href="home.php?mod=space&do=doing">动态</a></li>
  3.     <li {if $_GET['do'] == 'blog'}class="active"{/if}><a href="home.php?mod=space&do=blog">日志</a></li>
  4. </ul>
复制代码


**优点:**
- 灵活性高,适用于有多个参数的页面。
- 可以处理复杂的URL结构。

**缺点:**
- 需要确保所有导航项的 `href` 中都包含相同的参数。
- 需要手动处理每个导航项的参数。

### 第四种方法:使用 `$_G` 变量判断页面
这种方法适用于URL中没有明确参数的页面,如 `forum.php` 或 `home.php`。

**实现步骤:**
1. 在模板文件中找到导航栏的HTML代码。
2. 使用 `$_G` 变量判断当前页面。
3. 根据页面判断结果,添加高亮样式。

**示例代码:**
  1. <ul>
  2.     <li {if $_G['basescript'] == 'forum'}class="active"{/if}><a href="forum.php">论坛</a></li>
  3.     <li {if $_G['basescript'] == 'home'}class="active"{/if}><a href="home.php">家园</a></li>
  4. </ul>
复制代码


**优点:**
- 适用于没有明确参数的页面。
- 简单易用,适用于大多数场景。

**缺点:**
- 仅适用于Discuz默认页面,无法处理自定义页面。

### 总结
- **第一种方法** 适用于Discuz默认模板中的主导航栏,简单易用。
- **第二种方法** 适用于有明确 `do` 参数的页面,但局限性较大。
- **第三种方法** 适用于有多个参数的页面,灵活性高。
- **第四种方法** 适用于没有明确参数的页面,简单易用。

根据你的需求选择合适的方法,或者结合多种方法来实现更复杂的高亮效果。如果你需要进一步的帮助或具体的代码实现,请随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.218.110.116,GMT+8, 2025-4-20 06:13 , Processed in 0.215647 second(s), 78 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表