簡體   English   中英

突出顯示當前菜單選擇php

[英]highlight currently menu selection php

我有PHP代碼,該代碼將檢查用戶是否已登錄並返回菜單(如果已登錄),但是我想知道是否有一種方法可以使每個當前選中的內容突出顯示,或者我是否必須將它們添加為每頁的手冊列表?

代碼是:

<?php

if (!securePage($_SERVER['PHP_SELF'])){die();}

//Links for logged in user

if(isUserLoggedIn()) {

    echo "<div id='Default'>
    <ul>
    <li><a href='/account.php' >Account Home</a></li>
    <li><a href='/user_settings.php' >User Settings</a></li>
    <li><a href='/logout.php' >Logout</a></li>
    </ul></div>

    <div id='button1'>
    <a href='/Demos.php'>Demos</a></div>
    <div id='button2'>
    <a href='/Helpfiles.php'>Helpfiles</a></div>


    <div id='greeting'>
    Hello, $loggedInUser->displayname.</br>";



} 

//Links for users not logged in
else{
    echo "<div id='Default'>
    <ul>
    <li><a href='/login.php'>Login</a></li>
    <li><a href='/register.php'>Register</a></li>
    <li><a href='/forgot-password.php'>Forgot Password</a></li>";

    echo "</ul></div>";
}

?>

現在我知道,在普通的CSS上,它只是.current,您可以那樣做,但是由於它們同時在屏幕上,所以我無法通過回顯來實現。 最好的方法是什么? 手動添加看起來像是更長的路要走。

ps這與usercake一起使用

您無需將HTML放入PHP的echo中。 我會推薦這樣的東西。 因此,您將得到類似以下內容的結果:

<?php
if(isUserLoggedIn()) {
    ?>  
    <div id='Default'>
    <ul>
      <li><a href='/account.php' >Account Home</a></li>
      <li><a href='/user_settings.php' >User Settings</a></li>
      <li><a href='/logout.php' >Logout</a></li>
    </ul>
    </div>

    <div id='greeting'>
      Hello, <?php echo $loggedInUser->displayname; ?>
      </br>
<?php } ?>

然后,我不建議您使用PHP添加類,因為您將遭受很多ifelse情況的困擾。

最好的方法是對LI使用ID /類,然后使用簡單的JavaScript函數將所選的類添加到特定項目中。

順便說一句,如果您真的有需要在PHP中使用它,我建議您閱讀以下內容: http: //www.catswhocode.com/blog/snippets/highlight-current-menu-item-in-php http:// webdeveloperswall .com / php / how-to-highlight-the-current-page-in-menu-in-php

因此,您將獲得類似以下內容的信息:

<?php if(isUserLoggedIn()) { ?>  
<ul>
    <?php
    $url = $_SERVER['REQUEST_URI'];
    $parts = parse_url($url);
    $page_name = basename($parts['path']);
    ?>
    <li><a class="<?php echo ($page_name=='acount.php')?'selected':'';?>" href="where-to-buy.php">WHERE TO BUY</a></li>
    <li><a class="<?php echo ($page_name=='user_settings.php')?'selected':'';?>" href="about.php">ABOUT US</a></li>
    <li><a class="<?php echo ($page_name=='logout.php')?'selected':'';?>" href="contact.php">CONTACT US</a></li>
</ul>
<?php } ?>

編輯最后,您應該以如下形式結束: http : //pastebin.com/V8jxwi7T

您可以抓取當前正在瀏覽的頁面,看看是否匹配。 大概是這樣嗎? (對不起的例子很抱歉)

<?php
// will return 'home' is the filename is home.php
$filename       = pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME);
?>
<li <?php if ($filename == "home") { echo "class='active'"; } ?>>
    <a href="home.php">Home</a>
</li>

有關pathinfo的一些信息及其在這里的工作方式

只需將類添加到選定的<li>元素中即可,方法如下:

echo "<div id='Default'>
<ul>
<li><a href='/account.php' >Account Home</a></li>
<li class="selected"><a href='/user_settings.php' >User Settings</a></li>
<li><a href='/logout.php' >Logout</a></li>
</ul></div>";

在CSS中,為.selected類放置適當的樣式。

您應該有一個變量來告訴您當前位於哪個頁面,假設它是$currentpage

echo "<div id='Default'>
<ul>
<li".($currentpage=='account' ? ' class="selected"' : '')."><a href='/account.php' >Account Home</a></li>
<li".($currentpage=='usersettings' ? ' class="selected"' : '')."><a href='/user_settings.php' >User Settings</a></li>
<li><a href='/logout.php' >Logout</a></li>
</ul></div>";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM