0

外部のテンプレートページからページレイアウトを検索する方法を探しています。以下の例をご覧ください。

<head>
<title></title>
</head>
<body>


<search for header, css, layout, etc from external page>

Page contents

<search for footer>


</body>

PHPまたはHTMLを使用してこれを行う方法はありますか?ページごとに編集しなくても、すべてのページのレイアウトを編集できるようにしたいと思います。すべてのブラウザで機能する限り、同じ効果を達成するための他の手段を歓迎します。

どうもありがとうございます!

4

2 に答える 2

1

これはまさにPHPの目的です。includePHPスクリプトには、ステートメントを使用して別のスクリプトの内容を含めることができます。

したがって、アプリケーションの各ページには、コンテンツを生成footer.phpし、フッターレイアウトに含めるPHPスクリプトを関連付けることができます。このように、footer.phpそれを使用するすべてのページを変更すると、自動的に変更が取得されます。

一部のjavascriptとAjaxを使用することはできますが、純粋なHTMLを使用してこれを行うことはできません。

于 2012-10-09T04:32:46.597 に答える
0

Andrewが言ったように、 useincludes。2つの基本的な例を設定します。


最も単純なのは、メインファイルによって呼び出される複数のレイアウトファイルがあります。

header.php:

<div id="header">
    Menu can go here.
    <?php echo 'I make all my files .php, so they can use PHP functions if needed.'; ?>
</div>

footer.php

<div id="footer">
    <a href="#">Footer Link</a>
</div>

index.php

<html>
    <head></head>
    <body>
        <?php include('/path/to/header.php'); ?>
        Specific index.php content here.
        <?php include('/path/to/footer.php'); ?>
    </body>
</html>

もう1つのオプションは、関数内のすべての異なるレイアウト要素を含む1つのPHPファイルを用意することです。私がこれが好きな理由は、1つのファイルを含めてから、さまざまな部分に対して特定の関数を呼び出すことができるためです。これは、ページのタイトルなどの変数を渡すためにも使用できます。

layout.php

<?php
function makeHeader($title) {
    return 'My title is: '.$title;
}

function makeFooter() {
    $html = '
        <div id="footer">
            <a href="#">Footer Link</a>
        </div>
    ';
    return $html;
}
?>

index.php

<?php include('/path/to/include.php'); ?>
<html>
    <head></head>
    <body>
        <?php echo makeHeader('Page Title'); ?>
        Specific index.php content here.
        <?php echo makeFooter(); ?>
    </body>
</html>

no http://www.ファイルを含めるときは、必ず相対パス()を使用してください。これにより、変数と関数をスムーズに転送できます。これを行う最も簡単な方法はPHP変数を使用することです。$_SERVER['DOCUMENT_ROOT']そのため、ファイルhttp://mysite.com/includes/layout.phpinclude($_SERVER['DOCUMENT_ROOT'].'/includes/layout.php')がある場合は、含めるファイルがどこにあるかに関係なく、ファイルを含めることができます。

于 2012-10-09T04:56:00.583 に答える