我有一种 jQuery 方法,可以.current
根据站点 url 和相应的页面向锚链接添加一个类(即,如果我在“关于”页面上,它将.current
向导航菜单中的锚链接添加一个类指向“about.php”)。它确实可以完成这项工作,而且超级简单,但我想要一种PHP
方法来完成这项工作,就像 Wordpress 所做的那样。我最终得到的是一种非常规且不易修改的东西(下面的代码)
我的问题是:有没有更简单的方法可以做到这一点?你会在我的代码中看到我必须为$nav[#]
每个锚链接分配一个变量..这不是最方便的事情......
的HTML:
<ul class="nav">
<li><a href="index.php" class="<?php echo $nav1; ?>">home</a></li>
<li><a href="publications.php" class="<?php echo $nav2; ?>">publications</a></li>
<li><a href="research.php" class="<?php echo $nav3; ?>">research</a></li>
<li><a href="cv.php" class="<?php echo $nav4; ?>">cv</a></li>
<li><a href="contact.php" class="<?php echo $nav5; ?>">contact</a></li>
</ul>
PHP:
<?php
function getUrl() {
$url = @( $_SERVER["HTTPS"] != 'on' ) ? 'http://'.$_SERVER["SERVER_NAME"] : 'https://'.$_SERVER["SERVER_NAME"];
$url .= ( $_SERVER["SERVER_PORT"] !== 80 ) ? ":".$_SERVER["SERVER_PORT"] : "";
$url .= $_SERVER["REQUEST_URI"];
return $url;
}
$myurl = getUrl() ; // As was suggested, I could also just set $myurl = $_SERVER['PHP_SELF'] and avoid the complicated function call
$split_url = explode("/" , $myurl) ;
$page = end($split_url) ;
$nav1 = $nav2 = $nav3 = $nav4 = $nav5 = ' ' ;
if ( $page == "publications.php" )
$nav2 = 'current' ;
else if ( $page == "research.php")
$nav3 = 'current' ;
else if ( $page == "cv.php" )
$nav4 = 'current' ;
else if ( $page == 'contact.php')
$nav5 = 'current' ;
?>