.htaccess для верхнего и нижнего колонтитула, используя PHP - PullRequest
1 голос
/ 20 марта 2020

Я знаю, что могу написать

php_value auto_prepend_file "/root-directory/header.php"
php_value auto_append_file "/root-directory/footer.php"

в .htaccess , чтобы включить header и footer вверху и в конце каждой страницы, но это поместите их даже до / после тегов <html> и <body>.

Это работает в любом случае, но я знаю, что это не хороший способ настроить страницу html.

Хотя я могу «исправить» проблему с footer, поместив теги </body> и </html> в конце (даже если это не так уж хорошо, иметь каждый отдельный исходный код без закрывающих тегов), Я не могу найти способ исправить заголовок.

Есть ли способ сказать .htaccess поставить header сразу после тега <body> и footer прямо перед </body>?

1 Ответ

1 голос
/ 21 марта 2020

Вместо ваших header.php и footer.php файлов, содержащих (что звучит как) raw HTML (или HTML с PHP вложенным), вы, возможно, можете назначить это содержимое переменным и использовать переменные внутри вашего * Страница 1026 * - там, где вы хотите, чтобы контент отображался. Вы можете назвать этот файл template-variables.php, и тогда вам понадобится только один файл, который вы включите в auto_prepend_file.

Например:

php_value auto_prepend_file "/root-directory/template-variables.php"

Затем в template-variables.php:

<?php
// Template variables...
// (NB: Using HEREDOC <<< syntax)
$HEADER= <<<EOF
<header>
    <h1>Header goes here</h1>
    <p>More content goes here...</p>
</header>
EOF;

$FOOTER= <<<EOF
<footer>
    <p>Footer content goes here...</p>
    <p>Copyright etc.</p>
</footer>
EOF;

В вашем документе HTML / PHP:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- PHP: Short echo format -->
    <?=$HEADER?>

    <p>Some more content goes here...</p>

    <?=$FOOTER?>
</body>
</html>

Чтобы быть немного более инкапсулированным 1018 *, вы можете использовать ассоциативный массив для хранения переменных вашего шаблона, тогда у вас есть только одна переменная в глобальном пространстве имен. Например:

<?php
// Template variables...
$TEMPLATE_VARIABLES = [];
$TEMPLATE_VARIABLES['HEADER'] = 'Hello world';
:

Затем вы можете легко перебрать все ваши «переменные шаблона» в вашем скрипте, если это необходимо.

...