0

我有 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 并且你可以这样做,但是我不能用这个 echo 来实现它,因为它们都同时在屏幕上。最好的方法是什么?手动添加会看起来更长。

ps 这个是和usercake一起使用的

4

3 回答 3

1

您不需要将 HTML 放入echoPHP 中。我会推荐这样的东西。所以你最终会得到类似的东西:

<?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/Classes,并使用简单的 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

于 2014-02-18T12:04:43.743 回答
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 的一些信息以及它是如何工作

于 2014-02-18T12:09:53.843 回答
-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>";
于 2014-02-18T11:55:01.807 回答