设置“;主动的;下拉菜单包括;“nav.php”;;
当nav.php文件包含在中时,在下拉菜单上设置“活动”状态 这篇文章与其说是一个问题,不如说是一个php新手级的常见问题解决方案 我使用以下常用方法构建了我的网站:设置“;主动的;下拉菜单包括;“nav.php”;;,php,css,drop-down-menu,Php,Css,Drop Down Menu,当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 men
<?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 -->
我不确定是否需要,但我将其添加到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>
使用CSS处理所有这些,隐藏样式,并在当前页面中激活样式(取消隐藏),这样类将始终保持不变,但不会显示,更少的if语句,更少的赋值,我想更容易维护。如果我正确地遵循Fred-ii正在删除的面包屑,我将提供另一种设置“actve”的方法
在我的例子中,因为我已经有一个管理文件,php代码将放在admin.php中
admin.php
<?php
$path = $_SERVER['PHP_SELF'];
// get filename
$file = $_SERVER[PHP_SELF];
$file = basename($file); //structure.php
// get directory
$dir = dirname($path);
$dir = explode("/", $dir);
$dir = array_slice($dir, -1, 1); // by adjusting the offset each directory name can be isolated
$dir = implode($dir);
?>
在nav.php中
<div id="centeredmenu">
<nav id="nav">
<ul>
<li <?php if($file === "about.php")echo 'class="active"'; ?>><a href="about.php">About Us</a>
</li>
<li <?php if($dir === "products")echo 'class="active"'?>><a href="/products/index.php">Our Products</a>
<ul>
<li <?php if ($file === "index.php")echo 'class="active"'; ?>><a href="/products/index.php">Wedgets</a></li>
</ul>
</li>
看一下这个问答,你可能会发现其中有些有用的东西。我知道$_SERVER['PHP_SELF']是一个可选的方法。我不知道如何使用$\u服务器获取文件夹名。ie/products/我相信花一点时间在谷歌上搜索一下就会知道如何操作。请看一下手册,里面有很多好吃的东西;)也请检查一下,通常不要编写一行代码,但这是有效的:echo内爆(array_slice(explode(“/”),dirname($_SERVER['PHP_SELF']),-1,1));我希望你或其他人会发布一个小代码来展示如何。
<div id="centeredmenu">
<nav id="nav">
<ul>
<li <?php if($file === "about.php")echo 'class="active"'; ?>><a href="about.php">About Us</a>
</li>
<li <?php if($dir === "products")echo 'class="active"'?>><a href="/products/index.php">Our Products</a>
<ul>
<li <?php if ($file === "index.php")echo 'class="active"'; ?>><a href="/products/index.php">Wedgets</a></li>
</ul>
</li>
<?php
// get directory
$dir = dirname($path);
$dir = explode("/", $dir);
$dir = array_reverse ($dir, true); // Reverse the order
// and then select the directory names by referring to their depth in the directory structure.
$dir1 = isset($dir[1])? $dir[1]) : NULL; //someone
$dir2 = isset($dir[2])? $dir[2]) : NULL; //has
$dir3 = isset($dir[3])? $dir[3]) : NULL; //too
$dir4 = isset($dir[4])? $dir[4]) : NULL; //complicated
$dir5 = isset($dir[5])? $dir[5]) : NULL; //of_a
$dir6 = isset($dir[6])? $dir[6]) : NULL; //directory
?>
<li <?php if ($dir4 === "complicated")echo 'class="active"'; ?>>
<a href="/someone/has/too/complicated/index.php">Wedgets</a></li>
// another area of the website could be:
<li <?php if ($dir4 === "this")echo 'class="active"'; ?>>
<a href="/someone/keeps/making/this/directory/structure/too/long/index.php">More_Wedgets</a></li>