2012-10-25 102 views
5

所以,我正在做一个关于WWI网站作为学校作业,我想这是出现在每个文档中:HTML模板 - php?

<!DOCTYPE html> 

<html> 
<head> 
    <title>1914</title> 
    <script src="modernizr-1.5.js"></script> 
    <link href="styles.css" type="text/css" rel="stylesheet" /> 
    <meta charset="utf-8" /> 

</head> 
<body> 
    <div id="container"> 
    <header> 
    <img src="images/banner.png" alt="World War I" style="border: none"/> 
    <nav> 
     <ul> 
     <a href="index.htm"><li><span>Home</span></li></a> 
     <a href="1914.htm"><li><span>1914</span></li></a> 
     <a href="1915.htm"><li><span>1915</span></li></a> 
     <a href="1916.htm"><li><span>1916</span></li></a> 
     <a href="1917.htm"><li><span>1917</span></li></a> 
     <a href="1918.htm"><li><span>1918</span></li></a> 
     </ul> 
    </nav> 
    </header> 
    <section> 
    <article> 
    <br style="clear: both" /> 
    </article> 
    <aside> 
    </aside> 
    </section> 
    <footer style="font-weight: bold; letter-spacing: .1em"> 
    <a href="citations.htm">Citations</a> &bull; 
    <a href="about.htm">About</a> 
    </footer> 
    </div> 
</body> 
</html> 

我认为这是一种愚蠢的这一切复制粘贴到每个文档,如果我只是想更改一个单词或标签,就会刻意地进入并单独更改每个页面。有没有一种方法可以把它放在template.htm中(或者类似的东西),并且让php或者javascript代码把这个插入到<article>标签中的请求文件中?我不知道很多的PHP,所以这可能是你的大师的一块蛋糕,但我会很感激帮助。

+0

Hi Code Monkey, 您使用什么软件来创建项目?我问的唯一原因是大多数HTML编辑器都带有一个名为“Snippets”的功能,它允许您添加经常使用的任何代码,并且当您想要使用代码时,通常只需从菜单中选择一个选项。 Dreamweaver,PHP设计师,PHP风暴,PHPEd和大多数其他人都有此功能。如果你让我知道你使用什么,我会尝试引导你在正确的方向 – azzy81

+0

看看MVC设计模式 – JvdBerg

+0

@AronDraper谢谢,但我不是在寻找一个IDE解决方案,我正在寻找我可以放在我的文档中的一段代码。 –

回答

14

使用PHP包括:

保存为top.php

<html> 
<head> 
<title><?php echo $title; ?></title> 
<script src="modernizr-1.5.js"></script> 
<link href="styles.css" type="text/css" rel="stylesheet" /> 
<meta charset="utf-8" /> 

</head> 
<body> 
<div id="container"> 
<header> 
<img src="images/banner.png" alt="World War I" style="border: none"/> 
<nav> 
    <ul> 
    <a href="index.htm"><li><span>Home</span></li></a> 
    <a href="1914.htm"><li><span>1914</span></li></a> 
    <a href="1915.htm"><li><span>1915</span></li></a> 
    <a href="1916.htm"><li><span>1916</span></li></a> 
    <a href="1917.htm"><li><span>1917</span></li></a> 
    <a href="1918.htm"><li><span>1918</span></li></a> 
    </ul> 
</nav> 
</header> 
<section> 

保存为bottom.php

<aside> 
</aside> 
</section> 
<footer style="font-weight: bold; letter-spacing: .1em"> 
<a href="citations.htm">Citations</a> &bull; 
<a href="about.htm">About</a> 
</footer> 
</div> 
</body> 
</html> 

那么你的个人网页会是这样的:

<?php $title = '1914'; include("top.php");?> 
//This would be where you would make the changes that need to be made on each page. 

<article> 
<br style="clear: both" /> 
</article> 

<?php include("bottom.php");?> 
+0

个别页面仍然会保存为htm或php? –

+0

他们会被保存为PHP,我只是意识到顶级模板中有一个错误。固定。 –

+0

你需要在include之前声明$ title吗? – josephpconley

2

把内容在文件中abc.php

,然后添加这要在所需内容的每一页:

<?php 
include("abc.php"); 
?> 

所以,如果你的代码是:

<nav> 
     <ul> 
     <a href="index.htm"><li><span>Home</span></li></a> 
     <a href="1914.htm"><li><span>1914</span></li></a> 
     <a href="1915.htm"><li><span>1915</span></li></a> 
     <a href="1916.htm"><li><span>1916</span></li></a> 
     <a href="1917.htm"><li><span>1917</span></li></a> 
     <a href="1918.htm"><li><span>1918</span></li></a> 
     </ul> 
    </nav> 
    </header> 
    <section> 
    <article> 
    <br style="clear: both" /> 
    </article> 
    <aside> 
    </aside> 
    </section> 

而你想要<nav>里面的部分在每个页面中重复,你可以把内容放在之间和</nav>(含标签)在文件中abc.php和包括abc.php这样的:

<?php 
    include("abc.php"); 
?> 
    </header> 
    <section> 
    <article> 
    <br style="clear: both" /> 
    </article> 
    <aside> 
    </aside> 
    </section> 
+0

这不会工作,因为即使艰难的代码将包括在每个页面,如果你想编辑每一页中的一行,你不会是能够看到代码这样做。 – azzy81

+0

我想你误解了这个问题。如果我只是复制/粘贴到php中,是不是只是将页面内容添加到php内容的末尾?真正的问题是:我如何在'

'标签内的文档中插入我所拥有的内容? –

0

创建模板文件作为一个单一的文件,正是你拥有它了,但在你想要的内容的地方印刷PHP变量。

如:

.... 
<article> 
<?php print $mainContent; ?> 
</article> 
.... 

然后如下编写PHP函数:

<?php 
function insertContentIntoTemplate($mainContent) { 
    require_once('/path/to/template.php'); 
} 
?> 

现在,你可以简单地通过调用函数和内容传递到它加载网页内容划分为模板每页。

因此,例如,1914.php看起来是这样的:

<?php 
require_once('/path/to/insertFunction.php'); 

//the text could be loaded from a DB, or from another file, or just as a plain string like this: 
$text = "The year was 1914, and the war was just starting."; 

insertContentIntoTemplate($text); 

?> 

祝贺。你现在有一个工作(尽管非常简单)的模板系统。根据需要将更多变量/占位符添加到您的模板中。

3

你可以考虑这些流行的模板引擎之一:

  • Smarty(已经过时)

  • Latte(由Nette社区大多采用)

  • Twig(大多采用由Symfony社区)

  • Mustache(这个模板引擎的正式实施超过两个proramming /脚本语言存在)

我倾向于赞成Mustache,主要是因为它有an official JS version,an official Ruby version,an official Java version等。它允许您使用相同的模板前端和后端,这对于首次在后台呈现并在更新时在前台重绘的小部件非常有用。