Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置“;主动的;下拉菜单包括;“nav.php”;;_Php_Css_Drop Down Menu - Fatal编程技术网

设置“;主动的;下拉菜单包括;“nav.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

当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 -->
我不确定是否需要,但我将其添加到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>