You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向嵌套引用的navbar.php传递变量以实现导航栏当前页面高亮

如何向嵌套引用的navbar.php传递变量以实现导航栏当前页面高亮

Hey there! 完全懂你的困惑——把导航栏抽成单独文件后,原来直接在页面里设置aria-current="page"的方法就失效了,毕竟现在导航栏是共用的。咱们一步步来,把这事讲得明明白白。

核心思路

你的每个页面(比如about.php、portfolio.php)需要告诉共用的navbar.php:「我是当前活跃页面」。我们会在每个页面里先定义一个标识变量,再引入导航栏,最后在导航栏里根据这个变量判断给哪个链接加上高亮属性。


Step 1:在每个页面定义当前页的标识

在引入navbar.php之前,先定义一个变量(比如叫$active_page),用来标记当前是哪个页面。

举几个例子:

  • index.php(首页):
<?php
// 告诉导航栏:当前是首页
$active_page = 'home';
// 引入导航栏文件
include 'navbar.php';
?>
  • about.php(关于页):
<?php
$active_page = 'about';
include 'navbar.php';
?>
  • portfolio.php(作品集页):
<?php
$active_page = 'portfolio';
include 'navbar.php';
?>
  • contact.php(联系页):
<?php
$active_page = 'contact';
include 'navbar.php';
?>

Step 2:修改navbar.php,根据变量添加高亮属性

现在更新你的navbar.php代码,让它检查$active_page变量,给匹配的链接加上aria-current="page"属性。另外我们加个默认值,防止忘记设置变量时出错。

导航栏代码改成这样:

<?php
// 如果没设置active_page,默认标记为首页(避免报错)
if (!isset($active_page)) {
  $active_page = 'home';
}
?>

<nav>
  <!-- 首页链接 -->
  <a 
    href="index.php" 
    <?php if ($active_page == 'home') echo 'aria-current="page"'; ?>
  >
    首页
  </a>

  <!-- 关于页链接 -->
  <a 
    href="about.php" 
    <?php if ($active_page == 'about') echo 'aria-current="page"'; ?>
  >
    关于
  </a>

  <!-- 作品集页链接 -->
  <a 
    href="portfolio.php" 
    <?php if ($active_page == 'portfolio') echo 'aria-current="page"'; ?>
  >
    作品集
  </a>

  <!-- 联系页链接 -->
  <a 
    href="contact.php" 
    <?php if ($active_page == 'contact') echo 'aria-current="page"'; ?>
  >
    联系我
  </a>
</nav>

为什么这样能行?

当你在某个页面里引入navbar.php时,PHP会把导航栏的代码当成当前页面的一部分来执行。这意味着你在父页面定义的变量(比如$active_page),在导航栏文件里是可以直接用的。所以导航栏就能知道当前是哪个页面,自动给对应链接加上高亮属性啦。


可选进阶:自动识别当前页(不用手动定义变量)

如果你不想在每个页面都写$active_page,可以用PHP自带的$_SERVER['PHP_SELF']自动获取当前页面的文件名。修改后的navbar.php如下:

<?php
// 获取当前页面的文件名(比如index.php、about.php)
$current_page = basename($_SERVER['PHP_SELF']);
?>

<nav>
  <a 
    href="index.php" 
    <?php if ($current_page == 'index.php') echo 'aria-current="page"'; ?>
  >
    首页
  </a>
  <a 
    href="about.php" 
    <?php if ($current_page == 'about.php') echo 'aria-current="page"'; ?>
  >
    关于
  </a>
  <!-- 其他链接依此类推 -->
</nav>

这样就不用在每个页面手动设置变量了,导航栏会自动识别当前页面!


备注:内容来源于stack exchange,提问作者Veance

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:45:36