2011-03-18 67 views
0

我正在使用下面的這段代碼來突出顯示我的全局導航上的「活動」菜單項。PHP多個導航高亮顯示

<?php 
    $path = $_SERVER['PHP_SELF']; 
    $page = basename($path); 
    $page = basename($path, '.php'); 
?> 

<ul id="nav"> 
    <li class="home"><a href="index.php">Home</a></li> 
    <li <?php if ($page == 'search') { ?>class="active"<?php } ?>><a href="#">Search</a></li> 
    <li <?php if ($page == 'help') { ?>class="active"<?php } ?>><a href="help.php">Help</a></li> 
</ul> 

所有的作品都很棒,但是在幾頁上,我在全局頁面中有第二個子菜單(邊欄菜單)。

我基本上需要添加一個OR類型的聲明到某種程度上,但我不知道如何。我的意思

例子:

<li <?php if ($page == 'help') OR ($page == 'help-overview') OR ($page == 'help-cat-1') { ?>class="active"<?php } ?>><a href="#">Search</a></li> 

謝謝!

回答

2

你可以做到這一點是這樣的:

<li <?php echo ($page == 'help' || $page == 'help-overview' || $page == 'help-cat-1' ? 'class="active"' : ''); ?>><a href="#">Search</a></li> 


或者你可以使用的功能in_array()這是更好的在我看來:

<li <?php echo ($page == in_array('help', 'help-overview', 'help-cat-1') ? 'class="active"' : ''); ?>><a href="#">Search</a></li> 
+0

謝謝,無論是或者那些似乎工作,但如果我像這樣應用它,一切都很好!

  • class =「active」>Help
  • 。謝謝 – Blackbird 2011-03-18 16:02:02

    +0

    @Blackbird:現在可以修復了,因爲我已經更新了我的答案。另外,如你所見,在PHP中你使用'||'而不是'OR'。 – 2011-03-18 16:06:09

    1

    我知道這是不是正是你'但我會建議你使用簡單的css :)

    ul#nav a.active, ul#nav a:active { 
        color: green; 
        background: red; 
    } 
    
    0

    你可以使用一個約定來尋找一個基地,或家長,頁:

    $page = explode("-", $page)[0]; # should return 'help' for all help pages 
    
    <li <?php if ($page == 'help') { ?>class="active"<?php } ?>><a href="#">Search</a></li> 
    

    這意味着你將需要命名的網頁時使用的約定<parent_page>-<sub_page>