2014-09-11 51 views
0

我正在创建我的第二个网站,并希望使用PHP,因此我可以轻松地对每个页面的页眉和页脚进行更改,而无需更改40多页。PHP页眉和页脚困惑

我明白你做了一个header.php页面和一个footer.php页面,然后使用include将它放到你正在创建的任何页面中,但是我不想让头文件包含文档类型或标题标签或任何东西,如果你喜欢,我只想要标题的“body”部分。每个页面上的实际标签都需要分开,因为这似乎是将页面标题保留为每个页面最简单的方法,这可能吗?我浏览过网页,大多数人建议使用一些php代码来改变每个页面的标题,这似乎是一种解决方法,而不是首先实际防止问题,任何想法?

感谢

+1

那么你现在的结构和代码是什么样的? – 2014-09-11 08:56:56

+0

这是一种方法。我总是使用Smarty,因为我喜欢使用模板块和扩展布局的系统。 [Smarty {block}](http://www.smarty.net/docs/en/language.function.block.tpl) – 2014-09-11 10:32:19

+0

可能让我听起来愚蠢愚蠢,但基本上我编码了整个这个网站的主页,本质上只是HTML和CSS - 现在我只是在分解页眉和页脚。 – 2014-09-11 12:03:58

回答

1

很简单的丹尼尔,你可以选择你想要的任何地方所包含的文件。

例如:

<html> 
<head> 
    <title>This is your title pages</title> 
    <meta>This is your individual page meta data</meta> 
</head> 
<body> 
    <?php include 'header.php' ?> 
    <h2>This is your page title</h2> 
    <p>This is your page content</p> 
    <?php include 'footer.php' ?> 
</body> 
</html> 

而且你的头文件看起来是这样的:

<header> 
    <h1>This is your Site Title</h1> 
</header> 

,同样你的页脚:

<footer> 
    <p>Your copyright info</p> 
</footer> 

这使得头包含的文件没有实际head标签,这是我认为你感到困惑的地方。

希望是有道理的。

更新:所以在我的例子,实际的编译输出将呈现这样的:

<html> 
<head> 
    <title>This is your title pages</title> 
    <meta>This is your individual page meta data</meta> 
</head> 
<body> 
    <header> 
     <h1>This is your Site Title</h1> 
    </header> 
    <h2>This is your page title</h2> 
    <p>This is your page content</p> 
    <footer> 
     <p>Your copyright info</p> 
    </footer> 
</body> 
</html> 
+0

谢谢李,很好解释。所以基本上我可以使用PHP将'代码片段'放在页面的任何位置? – 2014-09-11 12:06:19

+0

是的,在一个非常基本的形式。这就是包含的内容。主文件读取'include'行,基本上将包含文件的内容编译到include所在的位置。 – Lee 2014-09-11 12:09:51

2

这不是一个解决办法,它只是实现它的最简单方法。当然,你可以放一些逻辑,并在header.php中包含额外的文件,标题和特定页面的东西,但为什么让你的生活变得更难?

<?php 

$title = 'My Title'; 
$stuff = 'Some random stuff'; 

include('header.php'); 

然后在header.php中你有

<?php 

... 

<title> 
    <?php if(isset($title)) echo $title; else echo 'Generic Title'; ?> 
</title> 
-1

我已经运行“制作网站”的全域并没有得到认真与页眉/页脚直到我开始使用WordPress框架。那是在手动编码两个CMS和一个我自己的电子商务套件之后。 :\我喜欢@ mariobgr的回答,这是向某个网站的模块化构建方面迈出的第一步。

我认为你正在寻找的是更多的页面/容器/内容的答案。 header.php通常是关于HTML标头,URL/POST/GET验证和安全性的。有时候JavaScript也在那里。通常,header.php将不具有<body><HTML>标记,那些标记更多。现在你打开了这个概念,我建议你已经准备好了CMS;像wordpress:个人内容是在MySql数据库中,然后你有一些文件来处理你的网站页面上的各种功能角色。

一种无关的,但另一个例子包括:我最近的非正式“框架”是一个非常重要的销售报告生成器工具。这是一个示例层次结构;压痕与各include

index.php 
    db.php   // connects to database 
    inc.js.php  // everything that's in <script> tags 
    inc.container.php  // isn't actually a page, is 1/3 page wide 
     class.dates.php  // meh, should be miraculously built in 
     inc.post.php  // POST processing to prefill form variables 
     inc.controls.php // Form w/buttons to change report info 
     inc.query.php  // epic MySql query 
     inc.report.php  // Churns the query data and spits out tables 
     inc.graph.php  // graphs data from above via CSS backround 
css/   // this is for jQuery 
js/    // this is for jQuery 
reports.css  // this is for me 

在现实中,什么开始作为一个页/ index.php成为inc.container.php然后我改变index.php,以便它可以具有相同的网页上多个报告“页面”。

我不是很面向对象,所以我在index.phpcontainer.php中包含了我需要的所有东西,即使这些公司包含更深层次的东西。几个关键变量在全局范围内,但container.php具有驱动逻辑的状态机。它基本上就是“页面”,即使我已经格式化了CSS打印介质,并在两行之间执行3。

jQuery/Ajax可以通过每个容器内的控件动态添加和删除更多的容器,所以这很有趣。这可以很容易地比较类似的时间段或跨越几个月,季度等报告。这个技巧是增加一个全局JavaScript变量,所以jQuery知道哪个div ID添加或杀死。

+0

geez,至少给-1的反馈。由于这个问题在我撰写我的作品时得到了两次回答,所以我将它改为具有更高层次的更多哲学感。 :P – 2014-09-11 18:37:42