多个和标签

时间:2014-04-26 12:19:10

标签: php html css

我正在尝试创建一个非常简单的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>

我有以下问题:

  1. head.php同时包含<body><head>标记。那么我应该在哪里编写这些PHP行来包含它? (在<head><body>中)(我不希望在最后一页中有多个<head><body>

  2. 我应该遵循的其他最佳做法是什么? (欢迎参考的任何链接)

  3. 我已经读过w3schools。

3 个答案:

答案 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.phpfoot.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的所有变量,你会收到警告。