0

我之前问过一个类似的问题,但我对这种创建页面的“风格”有一个更具体的问题。
我有 3 页的模板,header.php、page.php 和 footer.php。我试图让自己在单个页面中轻松编辑网站的某些部分,但也能够在每页的基础上添加额外的内容。我目前的结构是:
header.php

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Website Name<? if ($title) echo ' &ndash; ' . $title; ?></title>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link rel="stylesheet" type="text/css" href="reset.css">
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

页面.php

<?
$title = 'Page Title';
require_once('includes/header.php');
?>
<!-- Any extra stuff for the header goes here -->
</head>
<body>
Page content goes here.
<? require_once('includes/footer.php'); ?>

页脚.php

<footer>
I am a footer
</footer>
</body>
</html>

虽然这可行,但我无法轻松地制作可公开编辑的标题(菜单等),因为我的 header.php 页面不包含<body>. 但是,关闭<head>header.php 将不允许我在每页的基础上添加额外的文件(例如特定于页面的 javascript)。据我所知,标签中包含 CSS 和 javascript<body>并不是一个好主意。
我猜想在每个页面的顶部,在<head>标签之后,还需要一个文件(比如 menu.php)吗?但是,这似乎并不容易阅读/自然,我觉得必须有更好的解决方案?

4

3 回答 3

2

一个简单的解决方案是在“header.php”中添加一行来回显 $extraHeaders 的内容:

<!DOCTYPE html>
<html>
<head>
<?php echo $extraHeaders ?>
...

然后,您想要添加特定标题的任何页面(样式表、javascript 文件等),只需将其包含在 $extraHeaders 变量中:

$extraHeaders = '<script type="text/javascript" src="myscripts.js"></script>'

它将自动包含在该页面的标题中。


为了解决语法高亮和避免必须转义引号的问题,您可以使用输出缓冲区语法:

ob_start();
?>
<your html goes here> Alternatively, you can include an html file here.
<?php
$extraHeaders = ob_get_contents();
ob_end_clean(); 
...

如前所述,这将允许您使用变量,但具有语法突出显示,并且无需转义任何内容。

于 2012-05-06T17:22:12.923 回答
0

您可以在加载“页面”结束时使用+ 正则表达式 (或之ob_start类的标签来访问。{title}{scripts}

于 2012-05-06T17:17:36.620 回答
0

制作一个_autoload()脚本来预加载所有这些 php 文件。

这样,当有任何新内容要放置时,您总是可以转到包含该_autoload()函数的脚本并在那里更新它。

顺便说一句,将 javascript 放在<body>标签的最后实际上是一个好习惯。

于 2012-05-06T17:25:34.720 回答