.current
サイトのURLと対応するページに基づいてアンカーリンクにクラスを追加するjQueryの方法があります(つまり、「概要」ページを表示している場合.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' ;
?>