包括基于 URL 的 JavaScript 文件


include javascript file based on the URL

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

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

我尝试使用头文件顶部的$_SERVER['PHP_SELF']来获取 url,但它不起作用。

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

示例代码

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>

您要查找的数组是超全局$_SERVER。它有所有这些信息。更具体地说: $_SERVER['REQUEST_URI'] .

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

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

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

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

顺便说一句,@hendyanto的解决方案也很好。它当然可以防止文件名更改。

在页面上创建一个将包含 header 的变量.php稍后检查标题中的变量.php以确定要执行的操作。

在主页中.php(将调用标头的示例页面.php)

<?php
$page_code = "home";
include ("header.php");
/*Rest of your code*/
?>

在标题中.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;
}
?>
我不知道

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

任何页面.php

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

在标题中.php

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

通过这种方式,您可以将单独的JS,CSS文件包含在不同的页面中