【问题标题】:Variable info in included PHP file包含的 PHP 文件中的变量信息
【发布时间】:2014-12-01 13:52:37
【问题描述】:

目前我正在使用一个带有我网站页脚的 PHP 文件,因此我可以将它包含在每个页面上,并只更改一个文件来更改网站每个页面上的页脚。

现在,我想对我网站上的菜单做同样的事情,如下所示:

<ul>
<li><a href="#">Menu 1</a></li>
<li><a href="#" class="active">Menu 2</a></li>
<li><a href="#">Menu 3</a></li>
<li><a href="#">Menu 4</a></li>
</ul>

活动类突出显示用户所在页面的名称,因此如果用户位于网站的“菜单 2”页面,则“菜单 2”会突出显示。现在我想知道如何将这个菜单放在一个单独的文件中,比如我可以在每个页面中包含的“menu.php”,但仍然能够将 class="active" 更改为用户所在的页面。

【问题讨论】:

    标签: php html menu include code-duplication


    【解决方案1】:
    $open_page = substr($_SERVER["SCRIPT_NAME"], strrpos($_SERVER["SCRIPT_NAME"],"/")+1);
    

    <ul>
    <li><a href="#" <?php if($open_page == "Menu_1.php") echo " class= 'active' "; ?>>Menu 1</a></li>
    <li><a href="#" <?php if($open_page == "Menu_2.php") echo " class= 'active' "; ?>>Menu 2</a></li>
    <li><a href="#" <?php if($open_page == "Menu_3.php") echo " class= 'active' "; ?>>Menu 3</a></li>
    <li><a href="#" <?php if($open_page == "Menu_4.php") echo " class= 'active' "; ?>>Menu 4</a></li>
    </ul>
    

    【讨论】:

      【解决方案2】:

      与文件名比较不是最佳实践,当您的项目变得繁重时,维护起来很困难

      从页面调用页脚并传递页面标识符-

      ------ Menu1_page.php --------    
      <?php
          require_once 'footer.php';
          getFooter('Menu1');
      ?>
      

      在footer.php 中,将页脚保留在函数中

      ---- footer.php -----
      <?php
      function getFooter($activeid){
         ?>
            <ul>
            <li><a href="#" class="<?=($activeid=='Menu1')?'active':''?>">Menu 1</a></li>
            <li><a href="#" class="<?=($activeid=='Menu2')?'active':''?>">Menu 2</a></li>
              ......
            </ul>
         <?php
      }
      ?>
      

      【讨论】:

      • 变量中缺少$,否则这是我解决此问题的首选方案。
      【解决方案3】:

      嗯,根据您浏览页面的方式,您将获得类似的内容 mydomain.com\index.php?page=whereyouare.

      然后您可以访问$_GET['page'](甚至在您的footer.php 中)以确定您在哪个页面上以及是否正确匹配class=active

      我不建议使用 global-vars 来解决这个问题。

      【讨论】:

      • 我正在为此使用全局变量。我不喜欢在代码中嗅探$_GET
      猜你喜欢
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 2011-09-22
      • 2011-09-20
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      相关资源
      最近更新 更多