我有一种jQuery方法,可以根据网站网址和相应的页面向锚链接添加.current
类(即,如果我在“关于”页面,它会添加一个{ {1}}类导航菜单中指向“about.php”的锚点链接。它确实完成了这项工作,并且它非常简单,但我希望以.current
的方式完成此任务,方式与Wordpress类似。我最终得到的东西是非常规的,不容易修改(下面的代码)
我的问题是:有更简单的方法吗?你会在我的代码中看到我必须为每个锚链接分配一个变量PHP
..这不是最方便的事情......
HTML:
$nav[#]
PHP:
<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>
答案 0 :(得分:1)
看看$_SERVER['PHP_SELF']
。它将给出当前文件的文件名。
这是一个函数,如果页面与$_SERVER['PHP_SELF']
匹配,将添加当前类。
<?php
function add_current_class($page_name) {
if( $page_name == $_SERVER['PHP_SELF'] ) {
return ' current';
}
}
用法如下。
<ul class="nav">
<li><a href="index.php" class="<?php echo add_current_class('index.php'); ?>">home</a></li>
<li><a href="publications.php" class="<?php echo add_current_class('publications.php'); ?>">publications</a></li>
<li><a href="research.php" class="<?php echo add_current_class('research.php'); ?>">research</a></li>
<li><a href="cv.php" class="<?php echo add_current_class('cv.php'); ?>">cv</a></li>
<li><a href="contact.php" class="<?php echo add_current_class('contact.php'); ?>">contact</a></li>
</ul>
如果你想真正做到这一点,你可以做这样的事情。
<?php
function display_navigation() {
$pages = array(
'index.php' => 'home',
'publications.php' => 'publications',
'research.php' => 'research',
'cv.php' => 'cv',
'contact.php' => 'contact'
);
$link = '<li><a class="%s" href="%s">%s</a></li>';
echo '<ul class="nav">';
foreach( $pages as $page => $text ) {
printf($link, add_current_class($page), $page, $text);
}
echo '</ul>';
}
答案 1 :(得分:1)
以下是我推荐的版本:
<?php
$selectedClass = "current";
$nav1 = $nav2 = $nav3 = $nav4 = $nav5 = ' ' ;
?>
<ul class="nav">
<li><a href="index.php" class="<?=$nav1?> <?=(($_SERVER['PHP_SELF'] == "index.php") ? $selectedClass : '')?>">home</a></li>
<li><a href="publications.php" class="<?=$nav2?> <?=(($_SERVER['PHP_SELF'] == "publications.php") ? $selectedClass : '')?>">publications</a></li>
<li><a href="research.php" class="<?=$nav3?> <?=(($_SERVER['PHP_SELF'] == "research.php") ? $selectedClass : '')?>">research</a></li>
<li><a href="cv.php" class="<?=$nav4?> <?=(($_SERVER['PHP_SELF'] == "cv.php") ? $selectedClass : '')?>">cv</a></li>
<li><a href="contact.php" class="<?=$nav5?> <?=(($_SERVER['PHP_SELF'] == "contact.php") ? $selectedClass : '')?>">contact</a></li>
</ul>
这种方法完成了几件事,而不是Baylor Rae的回答: