使用php的活动当前页面不起作用

时间:2018-10-12 11:09:42

标签: php css twitter-bootstrap

我在header.php中有以下代码:

<?php

 $page = "";
?>

<ul class="nav navbar-nav navbar-right nav-pos">
   <li <?php if ($page == "home") { ?> class="active"<?php } ?>><a href="home.php">Home</a></li>
   <li <?php if($page == 'about') { ?> class="active"<?php } ?>><a href="aboutus.php">About us</a></li>
   <li <?php if($page == 'contact'){ ?> class="active"<?php } ?>><a href="contactus.php">Contact us</a></li>
   <li class="hidden-xs"><a href="#search"><i class="fa fa-search fa-rotate-90"></i></a></li>
</ul>

在每页上我都输入此代码(名称更改取决于当前页面):

<?php include 'header.php';
  $page = 'about' ?>

在CSS中,我做到了:

.active{color:red }

但是它不起作用...为什么不知道?

谢谢您的时间,我真的很感激

3 个答案:

答案 0 :(得分:0)

首先,您应该从标题中删除public class ApiRequestBuilder<T> { protected string Url => Uri?.AbsoluteUri; protected Uri Uri; static HttpClient Client = new HttpClient() { //Set timeout so replicating this issue itn't a pain Timeout = TimeSpan.FromSeconds(5) }; public ApiRequestBuilder(string url) { Uri = new Uri(url); } public async Task<T> GetAsync() { var response = await Client.GetAsync(this.Url); var result = await response.Content.ReadAsAsync<T>(); return result; } }

$page = "";

每页第二个交换这两行

<?php
  $page = "";//remove this line in header file
?>

<ul class="nav navbar-nav navbar-right nav-pos">

一些详细信息:在加载标头时,<?php $page = 'about';//swap these lines include 'header.php' ; ?> 为空,并且您的条件在$page标记中为假。因此,在加载标头之前,您应该将值分配给li

最佳方法::您应该使用$page而不是硬编码的$_SERVER['REQUEST_URI']。示例:

$page

答案 1 :(得分:0)

问题在于,您在header.php中明确设置了$page = ""-这意味着$page == 'about'(等)的所有检查都没有通过。

尽管您确实在主脚本中设置了$page = 'about',但这是在header.php中的代码运行并产生了html输出之后。

解决方案很简单:

1)从$page = ""移除header.php

2)在包含之前 设置$page = "about"(或等效设置)

答案 2 :(得分:0)

您只需使用jQuery,只需在页脚部分添加此脚本即可。

$(document).ready(function() {
    // get current URL path and assign 'active' class
    var pathname = window.location.pathname;
    $('.nav > li > a[href="'+pathname+'"]').parent().addClass('active');
});

在您的情况下,这将起作用。

$(function(){
    var current = location.pathname;
    $('.nav li a').each(function(){
        var $this = $(this);
        // if the current path is like this link, make it active
        if($this.attr('href').indexOf(current) !== -1){
            $this.addClass('active');
        }
    })
});