PHP - 根据我所在的页面,更改活动类

PHP - Based on which page I'm on, change the active class

本文关键字:活动 PHP      更新时间:2023-09-26

我有3页。根据我所在的页面,我想更改活动类以反映这一点。

这 3 个页面是索引、博客和联系人。它们中的每一个也有子页面,比如 Work 为各种项目提供了各种 PHP 文件。博客有各种博客文章。联系只是一个PHP联系表格。

我想根据这个人的情况,移动class="active"。现在,它在每个页面上都是硬编码的。

我的代码是:

<ul class="list-inline" id="menu">
    <li class="active">
        <a href="index.php">work</a>
    </li><!--
    --><li>
        <a href="blog.php">blog</a>
    </li><!--
    --><li>
        <a href="contact.php">contact</a>
    </li><!--
    --><li>
        <a href="#"><img class="social" src="img/icon/icon-facebook.png" alt="facebook"></a>
        <a href="#"><img class="social" src="img/icon/icon-twitter.png" alt="twitter"></a>
    </li>
</ul>

添加此 PHP:

<?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 <?php href('about.php');?>>About</a></li>

*这应该有效。祝你好运

有很多方法,其中之一是这个:

<?php
$page = ''; // @TODO: assign with the right value
$work_class = $page == 'work' ? 'active' : '';
$blog_class = $page == 'blog' ? 'active' : '';
$contact_class = $page == 'contact' ? 'active' : '';
?>
<ul class="list-inline" id="menu">
    <li class="<?=$work_class?>">
        <a href="index.php">work</a>
    </li><!--
    --><li class="<?=$blog_class?>">
        <a href="blog.php">blog</a>
    </li><!--
    --><li class="<?=$contact_class?>">
        <a href="contact.php">contact</a>
    </li><!--
    --><li>
        <a href="#"><img class="social" src="img/icon/icon-facebook.png" alt="facebook"></a>
        <a href="#"><img class="social" src="img/icon/icon-twitter.png" alt="twitter"></a>
    </li>
</ul>

为了获得更精确的答案,如果您提供有关其余代码外观的更精确信息,这将非常有用。

我会循环它。

<?php
$base = substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'], '/')-1); // Something like this to determine the current file such as 'blog.php'
$links = array();
$links['work'] = 'index.php';
$links['blog'] = 'blog.php';
// ..
foreach($links AS $name => $url)
{ ?>
    <a href="<?php echo $url; ?>"
    <?php if($base == $url) ?> class="active"<?php } ?>
    ><?php echo $name; ?></a>
<?php } ?>

您也可以将活动类添加到包装 li 元素 ofc 中。

<ul class="list-inline" id="menu">
<li<?php if ($_SERVER['SCRIPT_FILENAME'] == "index.php") { echo " class='"active'""; } ?>>
    <a href="index.php">work</a>
</li>
<li<?php if ($_SERVER['SCRIPT_FILENAME'] == "blog.php") { echo " class='"active'""; } ?>>
    <a href="blog.php">blog</a>
</li>
<li>
    <a href="contact.php">contact</a>
</li>
<li>
    <a href="#"><img class="social" src="img/icon/icon-facebook.png" alt="facebook"></a>
    <a href="#"><img class="social" src="img/icon/icon-twitter.png" alt="twitter"></a>
</li>
</ul>

诸如此类