繁体   English   中英

回显类“活动”-如果class =“”已经存在或不存在。

[英]echo class “active” - if class=“” is already exists or not.

以下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'; 但这没用。

使用现有的PHP代码尝试这种格式

<li><a class="icon-glass <?php href('index.php');?>">Home</a></li>
<li><a class="<?php href('about.php');?>">About</a></li>

意味着您必须在类属性的双引号“”内回显活动的类。

将功能href替换为

function 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM