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

如何用PHP根据当前页面为公共导航栏设置不同class类名

实现方案

前置步骤:页面传参

你需要在每个引入导航的父页面先定义当前页面标识,变量会自动传入被include的navigation.php中:
比如index.php中代码:

<?php
$page = 'index';
include 'navigation.php';
?>

register.php中代码:

<?php
$page = 'register';
include 'navigation.php';
?>

其他页面同理赋值即可。

方案1:switch 实现

navigation.php 代码如下:

<?php
$navClass = 'third-class'; // 默认类
switch($page) {
    case 'index':
        $navClass = 'first-class';
        break;
    case 'register':
        $navClass = 'second-class';
        break;
    // 后续新增页面只需加case即可
}
?>
<nav class="<?php echo $navClass; ?>">
    <!-- 公共导航代码 不用重复写多次 -->
</nav>

注意:不要把整个nav结构写在每个分支里,公共代码统一维护即可,只需要动态输出类名就行

方案2:数组映射(更推荐,维护成本更低)

如果后续会新增大量页面规则,用数组存映射关系更简洁,修改规则不用改动逻辑代码:

<?php
// 页面与导航类的映射关系,新增页面直接在这里加键值对即可
$classMap = [
    'index' => 'first-class',
    'register' => 'second-class'
];
// 取对应类,没有匹配就用默认的third-class
$navClass = $classMap[$page] ?? 'third-class';
?>
<nav class="<?php echo $navClass; ?>">
    <!-- 公共导航代码 -->
</nav>

进阶:自动识别页面,无需手动传$page

不想每个页面手动定义$page的话,可以在navigation.php里自动获取当前访问的页面文件名:

<?php
// 自动获取当前php文件的文件名(去掉后缀)
$page = basename($_SERVER['PHP_SELF'], '.php');
$classMap = [
    'index' => 'first-class',
    'register' => 'second-class'
];
$navClass = $classMap[$page] ?? 'third-class';
?>
<nav class="<?php echo $navClass; ?>">
    <!-- 公共导航代码 -->
</nav>

内容的提问来源于stack exchange,提问作者PHP Starter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:27:02