我正在尝试创建一个非常简单的Web应用程序,基本上是为了理解HTML5,CSS和JavaScript编码的最佳实践。
我的应用程序有3-4页,每个页面都使用相同的菜单标题。因此,我希望通过将其写入单独的文件(PHP或HTML)来使其可重用。
head.php (它可以重复使用):
<!DOCTYPE html>
<html>
<head>
<link href="../../css/headermenu.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<ul id="menu">
<li><a href="#" class="home">Home<span></span></a></li>
</ul>
<p>
</p>
</body>
</html>
front.php:
<?php
include ("$_SERVER[DOCUMENT_ROOT]/page/common/head.php");
?>
HTML标记(脏代码):
<!DOCTYPE html>
<html>
<head>
<!DOCTYPE html>
<html>
<head>
<link href="../../css/headermenu.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<ul id="menu">
<li><a href="#" class="home">Home<span></span></a></li>
</ul>
<p>
</p>
</body>
</html></head>
<body>
<div>
</div>
<p>
</p>
</body>
</html>
我有以下问题:
head.php
同时包含<body>
和<head>
标记。那么我应该在哪里编写这些PHP行来包含它? (在<head>
或<body>
中)(我不希望在最后一页中有多个<head>
和<body>
)
我应该遵循的其他最佳做法是什么? (欢迎参考的任何链接)
我已经读过w3schools。
答案 0 :(得分:6)
在我看来,阅读模板系统或了解框架/ CMS如何处理这个问题是个好主意。
按照自己的方式行事,你不能完全避免重复,例如每个content.php中的结束头标记</head>
。
所以这只是一个想法:
<强> head.php 强>
<?php
// Some other includes / requires,
// code snippets...
?>
<!DOCTYPE html>
<html>
<head>
<!-- site-wide stylesheets -->
<!-- & js-files -->
<link href="css/main.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="my/global/scripts.js"></script>
<强> content.php 强>
<?php
include ($_SERVER['DOCUMENT_ROOT'] . '/page/common/head.php');
?>
<!-- put page specific scripts &
<!-- styles here -->
<link href="my/pages/css/style.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="my/pages/js/scripts.js"></script>
</head>
<body>
<div id="container">
<!-- content start -->
<div id="content">
<h1>title</h1>
<p>Your content</p>
</div>
<!-- end of content div -->
<?php
include ($_SERVER['DOCUMENT_ROOT'] . '/page/common/foot.php');
<强> foot.php 强>
<div id="foot">
copyright etc
</div>
</div> <!-- end of container div -->
</body>
</html>
答案 1 :(得分:3)
php正在呈现html,如果你在两个文件中都有标题当然会打印两次
你应该分开包含但不要同时写入两个文件标签
例如
<header>
<?php
// this file should not include <head> taf
include ($_SERVER[DOCUMENT_ROOT] . '/page/common/header.php);
?>
</header>
BODY
<header>
<?php
include ($_SERVER[DOCUMENT_ROOT] . '/page/common/foot.php);
?>
</header>
include会带来head.php
和foot.php
的内容,并会放入index.php
个文件
答案 2 :(得分:2)
避免多个头标记的另一种可能的解决方案,也可以添加额外的css文件:
<?php
// head.php
$html = <<< EOF
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
<head>
<title>{$title}</title>
{$meta}
<link href="../../css/headermenu.css" rel="stylesheet" type="text/css"/>
{$additional_style}
</head>
<body>
<ul id="menu">
<li><a href="#" class="home">Home<span></span></a></li>
</ul>
{$mainbody}
{$footer}
{$javascript}
</body>
</html>
EOF;
?>
<?php
// page1.php
$title = 'some title';
$meta = '';
$additional_style = '';
$mainbody = 'your body';
$footer = '';
$javascript = '';
include_once("head.php");
echo $html;
?>
<?php
// page2.php
$title = 'some other title';
$meta = '';
$additional_style = '<link href="../../css/page2.css" rel="stylesheet" type="text/css"/>';
$mainbody = 'your body';
$footer = '';
$javascript = '';
include_once("head.php");
echo $html;
?>
它还允许多级继承(例如,您可以为几页定义相同的页脚)。这个原则也可以在没有EOF的情况下使用,但我认为它看起来更好。
主要的缺点是,如果你没有在包含它的页面中设置head.php的所有变量,你会收到警告。