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

时间:2013-10-15 17:35:12

标签: javascript php html css

我有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>

4 个答案:

答案 0 :(得分:1)

添加此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>

* 这应该有效。 祝你好运

答案 1 :(得分:0)

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

诸如此类

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

我会循环它..

<?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元素中。