我有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
一起使用答案 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>";