0

PHP で Web サイトを設計する場合、通常、header.phpサイトのすべてのページに含めるファイルがあります。header.phpファイルにはタグが含まれます(<head>とりわけ)。ただし、<head>タグ内にページ固有の JavaScript を配置する必要があることがよくあります。

私が過去にこれを処理した方法は、ヘッダーに 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 でその配列をチェックし、必要に応じて追加のスクリプト タグを書き込みます。

mypage.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のようなテンプレート エンジンを使用する場合、ヘッダーとフッターを含めるのではなくベーステンプレートを継承し、そのベースで定義されている「ブロック」を変更できます。

例として、基本テンプレートに content ブロックと 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 に答える