【发布时间】:2014-09-29 00:38:08
【问题描述】:
当包含 nav.php 文件时,在下拉菜单中设置“活动”状态。
这篇文章不是一个问题,而是一个常见问题的php新手级解决方案。
我使用以下常用方法构建了我的网站:
<?php
include "admin.php"; // handles MySQL connection and mysqli prepared stmts. etc.
include "header.php";
include "nav.php"; // nav with drop down menu
?>
<!-- html of the page -->
在我尝试将适当的选项卡和子选项卡设置为“活动”之前,一切都很好。当然,任何网站设计师都遇到过这个问题。我试着用谷歌搜索没有真正满意的答案。所以我想出了我自己的。
假设一个网站有 4 个标签(about_us products faq contact),最深的下拉菜单是 6 个子标签。
我在 admin.php 的底部添加了这一行:
$about = $prod = $faq = $cont = $sub1 = $sub2 = $sub3 = $sub4 = $sub5 = $sub6 = "nothing";
不确定是否需要,但我将其添加到 CSS 中
.nothing { }
网站每一页的顶部是:
<?php
include "admin.php";
/** if this page corresponds to the products tab and the fifth sub menu **/
$prod = $sub5 = "active"; // or whatever css uses as the class name
include "header.php";
include "nav.php"; // nav with drop down menu
?>
在 nav.php 中回显 css 类名
<div id="centeredmenu">
<nav id="nav">
<ul>
<li class="<?php echo $about; ?>"><a href="about.php">About Us</a>
</li>
<li class="<?php echo $prod; ?>"><a href="/products/index.php">Our Products</a>
<ul>
<li class="<?php echo $sub1; ?>"><a href="/products/index.php">Wedgets</a></li>
<li class="<?php echo $sub2; ?>"><a href="/products/grommets.php">Grommets</a></li>
<li class="<?php echo $sub3; ?>"><a href="/products/some.php">Some</a></li>
<li class="<?php echo $sub4; ?>"><a href="/products/more.php">More</a></li>
<li class="<?php echo $sub5; ?>"><a href="/products/useless.php">Useless</a></li>
<li class="<?php echo $sub6; ?>"><a href="/products/stuff.php">Stuff</a></li>
</ul>
</li>
所以这是我的新手设置激活包含的导航文件的方法。
我很想看看专业人士如何解决这个问题。让我们为获得同行投票最多的解决方案打勾。我敢肯定它不会是我的。
【问题讨论】:
-
看看这个问答的stackoverflow.com/q/17467614,里面可能会有一些有用的东西。
-
我知道 $_SERVER['PHP_SELF'] 将是一个可选方法。我不知道该怎么做是使用 $_SERVER 来获取文件夹名称。即 /products/ 我确信花一点时间在谷歌上搜索会提供方法。
-
看看手册php.net/manual/en/reserved.variables.server.php - 里面有很多好东西;)
-
通常不写一行代码,但这行得通: echo implode(array_slice(explode("/", dirname($_SERVER['PHP_SELF'])), -1, 1));
标签: php css drop-down-menu