以下PHP函数将class =“active”添加到当前打开的页面。
<?php #add class .active to current page
$directoryURL = $_SERVER['REQUEST_URI'];
$path = parse_url($directoryURL, PHP_URL_PATH);
$components = explode('/', $path);
$currentPage = preg_replace("/\\.[^.\\s]{3,4}$/", "", end($components));
if ($currentPage == "") {
$currentPage = "index";
}
function href($url) {
global $currentPage;
$path = explode('/', $url);
$page = preg_replace("/\\.[^.\\s]{3,4}$/", "", end($path));
echo 'href="' . $url . '"';
if ($page == $currentPage) {
echo 'active';
}
}
?>
以下是菜单项:
<li><a class="icon-glass"<?php href('index.php');?>>Home</a></li>
<li><a <?php href('about.php');?>>About</a></li>
问题是,该函数仅适用于没有声明class =“”的菜单项,即:
<li><a <?php href('about.php');?>>About</a></li>
它不适合这个:
<li><a class="icon-glass"<?php href('index.php');?>>Home</a></li>
我认为这与脚本的这一部分有关:
if ($page == $currentPage) {
echo 'class="active"';
}
问题:我如何保持它现在做的事情,即在尚未添加时添加class=""
,但也只是在已存在的类中添加.active
位(如果实测值)?
我尝试仅使用echo 'active';
,但这不起作用。
答案 0 :(得分:0)
使用现有的PHP代码
尝试此格式<li><a class="icon-glass <?php href('index.php');?>">Home</a></li>
<li><a class="<?php href('about.php');?>">About</a></li>
意味着你必须在类属性双引号“”中回显活动的类。
答案 1 :(得分:0)
用
替换函数hreffunction href($url) {
global $currentPage;
$path = explode('/', $url);
$page = preg_replace("/\\.[^.\\s]{3,4}$/", "", end($path));
if ($page == $currentPage) {
echo ' active " ';
}else{
echo ' " ';
}
echo ' href="' . $url . '" ';
}
这个HTML
<li><a class="icon-glass"<?php href('index.php');?>>Home</a></li>
<li><a <?php href('about.php');?>>About</a></li>
带
<li><a class="icon-glass <?php href('index.php');?>>Home</a></li>
<li><a class="<?php href('about.php');?>>About</a></li>