突出显示当前菜单选择php

时间:2014-02-18 11:50:46

标签: php css echo usercake

我有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,你可以这样做,但是我不能用这个回声来工作,因为它们同时在屏幕上。什么是最好的方式?手动添加会看到更长的路。

P.S。这与usercake

一起使用

3 个答案:

答案 0 :(得分:1)

您无需在PHP中将HTML放入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添加该类,因为如果 else 案例,您将会遇到很多的问题。

执行此操作的最佳方法是为LI使用ID / Classes,并使用简单的JavaScript函数将所选类添加到specite项。

顺便说一句,如果您真的觉得需要在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

答案 1 :(得分:0)

您可以抓住当前正在浏览的页面,看看它是否匹配。也许这样的事情? (抱歉粗略的例子)

<?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及其工作原理的一些信息here

答案 2 :(得分:-1)

只需将类添加到选定的<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>";