包括基于URL的javascript文件

时间:2013-09-05 06:54:34

标签: php header-files

我有一个应用程序,其中我创建了一个header.php,这显然适用于应用程序中包含在其他每个页面之上的所有页面。此头文件包含html头标记和DOCTYPE声明等,以及每个页面所需的一些常见JS和CSS文件。但是根据页面的不同,我想要包含一些特定的文件。

现在,我如何根据请求header.php的网址包含特定的JS或CSS文件。

我尝试在头文件顶部使用$_SERVER['PHP_SELF']来获取网址,但它无效。

请使用在这种情况下应该使用的最佳技术。

示例代码

header.php

 <?php
 include (dirname(__FILE__) . "/includes/functions.php");
 $url = $_SERVER['REQUEST_URI'];
  ?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>My APP</title>
<meta charset="utf-8" />
<meta name="robots" content="noodp, noydir" />
<meta http-equiv="X-Frame-Options" content="deny" />
<link rel="stylesheet" href="css/main.css" type="text/css" />
<script src="js/main.js"></script>
<?php
if($url == "teachers.php"){
echo "<script src='js/teachers.js'></script>";
   }  
?>

</head>
<body>

3 个答案:

答案 0 :(得分:3)

您正在寻找的阵列是超级全球$_SERVER。它有所有的信息。更具体地说:$_SERVER['REQUEST_URI']

$_SERVER['REQUEST_URI']给出完整路径,包括斜杠和任何GET请求。在您的情况下(如果teachers.php在您的服务器根目录中,并且您没有获取任何内容),它将保留/teachers.php,并且您正在与teachers.php进行比较。

$_SERVER['SCRIPT_FILENAME']获取正在执行的脚本,这就是您正在寻找的内容。

您可以使用basename过滤出路径:

$url = basename($_SERVER['SCRIPT_FILENAME']);

顺便说一句,@ hendyanto的解决方案也很好。它肯定对文件名更改很有用。

答案 1 :(得分:2)

在页面上创建一个包含header.php的变量,稍后检查header.php中的变量以确定要做什么。

实施例

  home.php中的

(将调用header.php的示例页面)

<?php
$page_code = "home";
include ("header.php");

/*Rest of your code*/

?>
  在header.php中

<?php
switch ($page_code) {
case 'home':
    echo "include js and css here..";
    break;

case 'profile':
    echo "include js and css here..";
    break;

default:
    # code...
    break;
}
?>

答案 2 :(得分:0)

我不知道它是否完美,但我在我的应用程序中使用它

anypage.php

<?php
$js= "path/jstoinclude.js";
include "header.php";
?>
在header.php中

<?php
//your code
if(isset($js)){
echo "<script src='".$js."'></script>";
}
?>

通过这种方式,您可以将不同的js,css文件包含到不同的页面