2012-12-10 54 views
0

使用這裏規定的方法/回答:dynamic navigation in php動態導航數據庫沒有

我想添加到它不過的頁面的鏈接,子菜單福。

我在玩這個了(從以前回答問題)

<?php 
$pages = array(
    'index.php' => 'Home', 
    'about.php' => 'About', 
    'contact.php' => 'Contact', 
    'faq.php' => 'FAQ', 
    'tutorials.php' => 'Tutorials', 
) ; 

$currentPage = basename($_SERVER['REQUEST_URI']) ; 

?> 

<div id="menu"> 
    <ul id="menuList"> 
     <?php foreach ($pages as $filename => $pageTitle) { 
      if ($filename == $currentPage) { ?> 
     <li class="current"><?php echo $pageTitle ; ?></li> 
      <?php } else { ?> 
     <li><a href="<?php echo $filename ; ?>"><?php echo $pageTitle ; ?></a></li> 
      <?php 
      } //if 
     } //foreach 
      ?> 
    </ul> 
</div> 

我希望做的是能夠子菜單項添加到關於菜單項,或FAQ菜單。

雖然在狩獵和啄的PHP部分,我迷路了,直到有些作品。 :)

當然,因爲它最多隻有一個10頁的網站,所以我可以簡單地在每個頁面中都有菜單代碼。但那會是什麼樣的學習實驗? :)

預先感謝這個「名牌崇拜者編碼器」

PS任何見解。很多感謝Fanis其上面的代碼

+0

你能成爲一個更具體一點的一個CSS你要求什麼?您是否需要幫助理解PHP? – aug

回答

1

[SPAGUETTI CODE ALERT]

你可以試試這個,

<?php 
$pages = array(
    'index.php' => 'Home', 
    'about.php' => array('pageTitle' => 'About', 'subpages' => array(
     'about1.php' => 'About subpage #1', 
     'about2.php' => 'About subpage #2', 
     'about3.php' => 'About subpage #3')),   
    'contact.php' => 'Contact', 
    'faq.php' => 'FAQ', 
    'tutorials.php' => 'Tutorials', 
) ; 

$currentPage = basename($_SERVER['REQUEST_URI']) ; 

?> 

<div id="menu"> 
    <ul id="menuList"> 
    <?php foreach ($pages as $filename => $value) { 

     if (is_array ($value)) { 
      $pageTitle = $value ['pageTitle']; 
     } else { 
      $pageTitle = $value; 
     } 

     if ($filename == $currentPage) { 
      $attr_current = ' class="current"'; 
     } else { 
      $attr_current = ''; 
     } 
     ?> 
     <li<?php echo $attr_current; ?>><a href="<?php echo $filename; ?>"><?php echo $pageTitle ; ?></a> 

     <?php if (is_array ($value)) { ?> 
      <ul id="submenuList"> 
      <?php foreach ($value ['subpages'] as $subfilename => $subpageTitle) { ?> 
       <li><a href="<?php echo $subfilename; ?>"><?php echo $subpageTitle ; ?></a></li> 
      <?php } ?> 
      </ul> 
     <?php } ?> 

     </li> 

    <?php } //foreach ?> 
    </ul> 
</div> 

正如你可以看到它是不是永遠,所以如果我是乾淨的解決方案做這樣的事情我會寫上面的代碼是這樣的:

<?php 
$pages = array(
    'index.php' => 'Home', 
    'about.php' => array('pageTitle' => 'About', 'subpages' => array(
     'about1.php' => 'About subpage #1', 
     'about2.php' => 'About subpage #2', 
     'about3.php' => 'About subpage #3')),   
    'contact.php' => 'Contact', 
    'faq.php' => 'FAQ', 
    'tutorials.php' => 'Tutorials', 
) ; 

$currentPage = basename($_SERVER['REQUEST_URI']) ; 

?> 

<div id="menu"> 
    <ul id="menuList"> 
    <?php foreach ($pages as $filename => $value): 

     $pageTitle = is_array ($value) ? $value ['pageTitle'] : $value; 
     $attr_current = $filename == $currentPage ? ' class="current"' : ''; 
     ?> 
     <li<?=$attr_current?>><a href="<?=$filename?>"><?=$pageTitle?></a> 

     <?php if (is_array ($value)): ?> 
      <ul id="submenuList"> 
      <?php foreach ($value ['subpages'] as $subfilename => $subpageTitle): ?> 
       <li><a href="<?=$subfilename?>"><?=$subpageTitle?></a></li> 
      <?php endforeach; ?> 
      </ul> 
     <?php endif; ?> 

     </li> 

    <?php endforeach; ?> 
    </ul> 
</div> 

不是真的既整齊,但..

如果你想使用後者只需記住:

+0

這就是我要建議的......只需在陣列中添加另一個維度即可。 :) – Swivel

+0

甜。我會放棄這一點。 (也許開始搜索一個很好的PHP底漆也是如此。{humbled-grin}) –

+0

很好。如果這適合你,請考慮接受這個答案:) – novato