2011-10-13 43 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配置。