2011-10-13 91 views
0

我正在开发一个网站,我正在尝试为我的头文件包括我的导航菜单(这里主要的主题)。PHP的foreach菜单包括

我的导航菜单中的header.php文件中的代码是在这里:

<!-- topmenu --> 
<div class="menu-header"> 
    <div class="container"> 
      <ul class="top menu"> 
      <?php 
      $nav = array("Home","About","Portfolio","Products","Services","Contact"); 
      foreach($nav as $item){ 
      if($item == $title){ 
       echo "<li class='current-menu-ancestor parent'><a href='$item.php'>$item</a></li>"; 
       }else{ 
       echo "<li><a href='$item.php'>$item</a></li>"; } 
       } 
       ?> 

      </ul> 
     </div> 
</div>   
<!--/ topmenu --> 

您可能会注意到,在代码是条件if($item == $title)。在我的index.php中,我包含了$title="Home";,我打算在这个if语句中使用它。

<?php 
    include("header.php"); 
$title = "Home"; 
?> 

谁能告诉我在哪里,我错了:

在我的index.php页面中我已经用下面的代码包含在此?

回答

3

不是答案,但注释不适合格式化的代码。你可能想删除重复你的一些HTML的:

$class = ''; 
if($item == $title) { 
    $class = ' class"current-menu-ancestor parent"'; 
} 

echo "<li{$class}><a href='$item.php'>$item</a></li>"; 

仿型HTML,你也可能会导致维护问题以后,如果你决定要改变的东西在菜单结构和转变只是其中一个副本菜单html。

+0

+1:这是一个很好的建议。 – hakre

2

您需要在包含header.php之前设置$ title!

<?php 
    $title = "Home"; 

    include("header.php"); 
?> 
3

的header.php不能展望一下未来。如果你想在变量中设置变量,你需要先设置它:

<?php 
    $title = "Home"; 
    include("header.php"); 
?> 

所以你基本上只是切换线。

此外,我建议您在开发时将错误报告启用到最高级别,因为它会提示您输入代码时可能发生的常见错误。

您可以通过添加以下两行到你的脚本的顶部做到这一点:

error_reporting(~0); 
ini_set("display_errors", "1″); 

或更改你的PHP配置。