到目前为止我遇到的简单问题总是通过PHP解决:
您有一个包含标题,菜单,页脚和内容字段的网站。
每页的页眉,菜单和页脚通常都是相同的。
因此,例如,您没有十个页面(如home.html,products.html,about.html,..)都在其html文件中拥有静态标题和菜单的副本。现在,如果您想更改标题,则必须更改十个文件。
我希望我的问题足够清楚,如果不是,请发表评论:)
答案 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模板,例如Underscore或Closure提供的模板。更有可能的是:拒绝为不愿意进行适当网络托管的客户工作,并且仅根据成本而非基于网站适合的成本做出决定。
答案 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