0

在使用 PHP 设计网站时,您通常会header.php在网站的每个页面中包含一个文件。该header.php文件将包括<head>标签(除其他外)。但是,我经常发现我需要将特定于页面的 JavaScript 放在<head>标记中。

我过去处理这个问题的方法是在我的标题中添加 IF 语句以确定应该输出哪些 JavaScript 片段(即,如果这是主页,则输出主页所需的 JavaScript ,如果这是关于页面,输出关于页面所需的 JavaScript等)。

这可能是一种糟糕的方法。标准做法是什么?

4

5 回答 5

3

好吧,首先,<script>标签不需要位于标题中。将它们放在 HTML 文档中的任何位置都是完全有效的。

但是,如果您决定将它们包含在标头中,一个简单的解决方案是声明一个标头应回显的变量,其中包含您的脚本标签。例如:

<?php
$scripts = "<script src='script.js' type='text/javascript'></script>";
include("header.php");
?>

然后你的 header.php 脚本如下所示:

<html>
<head>
<!-- header stuff goes here -->
<?php /*echo out scripts */ echo $scripts; ?>
</head>
<body>
<!-- part of body goes here -->
于 2012-07-05T19:27:16.440 回答
3

假设您实际上在每个文件中都包含 header.php,只需在包含 header.php 之前定义一个数组并将额外的脚本添加到该数组中。然后在 header.php 中,让它检查该数组并在必要时写出额外的脚本标签:

我的页面.php:

$extra_scripts = array('jquery.js','jquery-ui.js');
include('header.php');
// Rest of your code.

header.php:

if (is_array($extra_scripts)) {
   foreach( $extra_scripts as $script ) {
         // Render a script tag
   }
}
于 2012-07-05T19:27:49.713 回答
2

如果你使用像Twig这样的模板引擎,你可以继承一个基本模板而不是包含一个页眉和一个页脚,并修改在该基础中定义的“块”。

例如,您的基本模板可能包括一个内容块和一个 header_javascript 块,如下所示

{% block header_javascript %}
<script src='/js/jquery.js' type='text/javascript'></script>
{% endblock %}

然后,在您的子模板中,您可以覆盖此块,调用{{ parent() }}然后添加您的其他特定于页面的脚本。

于 2012-07-05T19:26:32.787 回答
2

我可以看到你的问题已经回答得很清楚了。但我想补充一点。

script好吧,从技术上讲,将标签放在文档中的任何位置都是有效的,但除非必要,否则最好将脚本放在文档的末尾。它会让访问者仍然看到你的 html 和 javascript 尚未下载,顺便说一句,通常你不需要运行你DOM的脚本,直到准备好。

于 2012-07-05T19:34:59.343 回答
1

我就是这样做的:

<!DOCTYPE html>
<html lang="en"> 
<head>
    <title>Page Title</title>
    <meta name="description" content="Page Description" />

    <!-- Includes header stuff, css, js, google analytics, etc.. -->
    <? include('header.php'); ?>

</head>
<body>
 ...

这使我可以避免重复编码,同时增加页面的灵活性。

于 2012-07-05T19:25:57.517 回答