2

我正在尝试在我制作的每个页面中包含一个 php 标头。现在据我所知,可以通过<?php include('header.php'); ?>在每个文件中使用来完成。

现在我的问题是我有 5 个页面,并且在标题 php 中我有一个导航,它链接到每个页面。当我加载标题时,我想更改加载标题的文件的链接。

例如:如果我打开主页,我希望标题将标题导航内的链接加粗。这可能需要我在包含它或 smt 时将变量发送到头文件?如果是这样,那该怎么做?:D

提前谢谢你,丹尼尔!

4

4 回答 4

2

您始终可以使用$_SERVER['SCRIPT_NAME']来获取所请求的最外部 php 文件的名称。比您可以相应地更改导航中的链接样式,即:

 <a href="some.php" style="font-weight: <?= $_SERVER["SCRIPT_NAME"] == '/some.php' ? 'bold' : 'normal' ?>">Link to Some</a>
 <a href="other.php" style="font-weight: <?= $_SERVER["SCRIPT_NAME"] == '/other.php' ? 'bold' : 'normal' ?>">Link to Other</a>
于 2012-08-13T14:15:09.990 回答
2

您可以通过在包含标头之前设置变量或查看 URL 来执行此操作。

一个简化的例子:

$page = "home";
include "header.php"

header.php

if ($page == "home") { ... }

以下代码将为您提供 URL 中的文件名

$basename = basename($_SERVER['REQUEST_URI']);

所以如果你有http://mysite.com/index.php它会给你index.php

您可以header.php像我上面描述的那样使用它来决定哪个链接为粗体。

于 2012-08-13T14:15:14.483 回答
2

在下面的代码中,您可以将此类调用到其他页面并将页面名称作为参数传递,并且可以非常轻松地调用 jQuery 函数

<?php
class header {
function __construct($title = "Home", $page = 'home') {
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title><?php echo $title; ?></title>
         <script type="text/javascript" src="js/jquery.js"></script>
            <script type="text/javascript" src="js/script.js"></script>
            <script>
        $(document).ready(function(){
            $('.<?php echo $page ?>').addClass('active');
            });    
        </script> 
        </head>
<body>
     <ul class="nav">
        <li class="home"><a href="index.php"><br />HOME<br /></a></li>
         <li class="about"><br />ABOUT US<br /></li>
     </ul>
<?php }} ?>
于 2012-08-13T14:21:21.263 回答
1

一种方法是从头文件中检查执行脚本的名称,如下所示(在 header.php 中):

$page = basename($_SERVER["REQUEST_URI"]);
if($page == 'index.php') {
    //header included from inside index.php
}
elseif($page == 'contact.php') {
    //header included from contact.php
}
...
于 2012-08-13T14:16:33.740 回答