是否有PHP代码可以用来自动检测哪个链接应该使用CSS活动属性?

时间:2014-01-22 15:17:22

标签: php html css

很抱歉,如果这个措辞令人困惑 - 我对PHP很新,因为我正在为我的小型组织设计一个网站,并且只有以前的CSS和HTML经验。

基本上,我使用PHP include在网站中包含页眉和页脚,这样只需要一次更新即可更改所有链接,因为它是一个非常大的网站,有很多页面需要永远更新在HTML中。

我现在遇到的问题是,由于php include只有一个页面,无论你在哪个页面,标题菜单中“活动”并突出显示为蓝色的类别是我最初复制的那个菜单来自创建.php文件。显然,我希望它是你实际所处的菜单类别,而不是每次都是同一个菜单类别。我确信在PHP中有一种非常简单的方法可以做到这一点,但我找不到任何东西,因为我不确定如何在搜索时提出问题。提前感谢任何可以提供帮助的人!

4 个答案:

答案 0 :(得分:0)

最简单的方法,使用全局变量和大量条件逻辑:

您网站上的任何文件:

<?php
$current_page = 'name of page here';
include('menu.php');
... page content/logic here ...

menu.php

<?php
if (!isset($current_page)) { $current_page = 'home'; }
?>

<ul id="menu">
   <li<?php ($current_page == 'home') : ' class="current"' : '' ?>>Home</li>
   <li<?php ($current_page == 'foo') : ' class="current"' : '' ?>>foo</li>
   etc...
</ul>

答案 1 :(得分:0)

我不知道您的菜单是什么样的,但您可以使用PHP_SELF测试当前页面

<?php
$urls = array('index.php', 'include7.php', 'about.php');
$current_page = basename($_SERVER['PHP_SELF']); // if for example you are in /folder/index.php ; the basename will output only 'index.php'
?>
<?php foreach ($urls as $url): ?>
    <a href="<?=$url;?>" style="color: <?= ($url==$current_page) ? 'green' : 'red'?>"><?=$url;?></a>
<?php endforeach; ?>

在我的例子中,我在include7.php文件中,所以在输出中,只有它是绿色,其他2是红色。

答案 2 :(得分:0)

我喜欢这样做的方法根本不使用PHP逻辑。在每个页面中,将类添加到高级元素,例如body

<body class="home">

然后在菜单中,为每个菜单选项添加匹配的类名:

...
<li class="home"><a href="/home">Home</a></li>
<li class="whatever"><a href="/whatever">Whatever</a></li>
...

然后在CSS中:

body.home li.home a,
body.whatever li.whatever a
{
    color: blue;
}

...或者你想要的任何风格,使用你喜欢的任何选择器,关键是CSS寻找匹配的主体和菜单项classname,因此只突出显示当前页面的项目。

这意味着没有任何PHP逻辑。创建新页面时,为其添加一个body类,并在菜单中添加一个匹配的条目,并将其添加到CSS中。

我倾向于在像你这样的情况下使用这种方法,当PHP没有被用作服务器端语言或CMS系统时,就像一个非常简单的模板构建器。它使服务器端代码非常小,与设置的其余部分相匹配。

答案 3 :(得分:0)

我会这样做:

1)从PHP中检测您所在的页面 2)更新页眉/页脚中依赖于您所在页面的部分

检测您所在的页面

$_SERVER['PHP_SELF']超全局变量将为您提供当前页面相对于站点根目录的路径。

例如,如果您的网页为http://whatever.site.com/about.php,则会显示/about.php

这意味着您可以使用当前页面的名称作为键来更改通用页眉/页脚中的任何行为。
根据页面的存储方式,您可以轻松地合成当前页面的简单标识符(例如“索引”,“关于”,“联系人”等)。

然后,您可以将其放在全局$PAGE变量中,以便您可以从PHP代码的任何位置识别当前页面。

更新变量部分

如果根据您所在的页面需要更改某些项目(通常会突出显示标题中的当前页面),您可以通过选中$PAGE

轻松完成此操作
<li class='.<?php echo $PAGE=='about'   ? 'selected' : 'unselected' ?>about
<li class='.<?php echo $PAGE=='contact' ? 'selected' : 'unselected' ?>contact

您可能还希望减少冗余代码生成,例如:

<?php
function menu_items ()
{
    global $PAGE;

    foreach (array ("home", "about", "contact") as $page)
        echo "<li class='.(($PAGE==$page) ? 'selected' : 'unselected')."'>$page";
}
?>

<!-- header menu -->
<ul><?php menu_items(); ?></ul>