PHP共享标头而不使用服务器端脚本?

时间:2010-05-24 17:05:19

标签: php html

到目前为止我遇到的简单问题总是通过PHP解决:

您有一个包含标题,菜单,页脚和内容字段的网站。

每页的页眉,菜单和页脚通常都是相同的。

  • 如果没有PHP或任何其他服务器端语言,您如何只在一个文件中存在标题,菜单和页脚数据?

因此,例如,您没有十个页面(如home.html,products.html,about.html,..)都在其html文件中拥有静态标题和菜单的副本。现在,如果您想更改标题,则必须更改十个文件。

我希望我的问题足够清楚,如果不是,请发表评论:)

12 个答案:

答案 0 :(得分:8)

如果您使用的是Apache,则可以使用server-side includes。这些基本上在HTML文档中提供了包含语句。

安装并启用mod_include。配置

Options +Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

使用.shtml作为主页文件扩展名。然后在您的页面中,您可以执行

之类的操作
<!--#include virtual="/header.html" -->

Nginx还支持server-side includes及其SSI模块:

location / {
    ssi on;
}

HTML:

<!--# include file="header.html" -->

答案 1 :(得分:5)

框架可以做到这一点。但不能说结果的质量。

答案 2 :(得分:4)

也可以完全使用客户端脚本编写。只需执行一些异步请求即可获取静态资源并将其注入页面。这实际上只是一个JS版本的框架,而不是解决问题的最佳方式,但它确实有效。

答案 3 :(得分:1)

如果您的主机支持shtml文件,则它们的可编程性有限。

<!--#include file="included.html" -->

否则,对于普通的html,你很害怕,除非你有一些花哨的javascript / ajax这样做。

答案 4 :(得分:1)

不知道它是完全你的意思,但你可以用SSI (server-side includes)而不是服务器端脚本来完成。 SSI不是脚本,它只是一种包含其他文件而无需编写任何实际代码的方法。

至于在没有服务器帮助的情况下这样做,这是一个不同的故事。你最好使用服务器来做这种事情。它感觉很脏,你最终得到了奇怪的文件,这是一个很难管理,但模板和包括做你想要做的相当不错的工作。

答案 5 :(得分:1)

使用JavaScript模板,例如UnderscoreClosure提供的模板。更有可能的是:拒绝为不愿意进行适当网络托管的客户工作,并且仅根据成本而非基于网站适合的成本做出决定。

答案 6 :(得分:0)

您拥有的一个选项是在引用JS文件中包含标题,其中包含标题的document.write()。当然,我不会将此方法用于我自己的代码,因为我通常使用PHP或VB。

答案 7 :(得分:0)

我能想到的最明显的方法是不涉及服务器语言(但 涉及服务器端处理)是server side includes

答案 8 :(得分:0)

如果必须,并且没有框架,ajax请求获取数据将是最好的。虽然,如上所述,会杀死seo

答案 9 :(得分:0)

如果你可以使用javascript和jQuery,你可以使用$ .load动态加载页眉和页脚。虽然不是最干净的解决方案。

答案 10 :(得分:0)

我最喜欢的解决方案是,因为您了解PHP,所以生成一个PHP脚本,给定一个模板文件夹,生成一个最终HTML文件的文件夹供您上传。实际上,这听起来像是一项非常简单的任务。

答案 11 :(得分:0)

使用PHP include或Apache服务器端包含的建议是正确的,这些可以解决问题。

但我建议另一个特定于PHP的选项,如果您知道每个页面具有相同的页眉和页脚:

  • auto_prepend_file

  • auto_append_file

请参阅http://www.php.net/manual/en/ini.core.php

上的文档