【问题标题】:Static Html pages with same header / footer included [closed]包含相同页眉/页脚的静态 Html 页面[关闭]
【发布时间】:2014-03-16 19:34:37
【问题描述】:

我想生成我的网页,其中包含从单个文件中获取的页眉/页脚的一些内容。

我没有服务器端支持,我想避免使用 iframe、javascript、css 技巧来解决这个问题

我只需要一种软件模板,我可以在通过 ftp 上传之前“编译”我的静态 html 页面

有这样的吗?你是如何解决这个问题的?

谢谢

【问题讨论】:

  • I'd like to avoid iframes, javascript, css 不考虑 iframes.. 您想为您的网页使用用户代理样式表吗?
  • 我的意思是我想避免所有 3 个作为在我的所有页面中包含一个通用标题的解决方案。我不想使用 ajax、iframe 或其他技巧。
  • 如果您正在寻找HTML template engines,您可能需要查看:Liquid HTMLCheetahHAMLSlim 等。

标签: html css templates static


【解决方案1】:

有一大堆软件可以满足您的需求。 静态站点生成器 应该是 google 上的一个很好的搜索字符串。我个人的偏好是基于红宝石的nanoc,但还有很多其他的。 Assemble 看起来也很漂亮,并且有一个 yeoman 生成器。

【讨论】:

  • nanoc 看起来很不错。从 SEO 的角度来看,subfoder 解决方案对多语言的支持也很棒!非常感谢
  • jekyllrb.com也不错
  • 是的,jekyll 很好!出于兴趣,你最后选择了哪一个?
  • 我选择了 Jekyll。我喜欢它与 Github 页面集成的方式。我可以免费托管我的网站并同时对其进行版本控制。唯一的缺点是在 Github 上你不能启用额外的插件。因此,例如,如果您需要使用多语言 jekyll 插件,则需要先预编译该站点,然后再将其放在 Github 下,这样您就会失去对 jekyll 的 Github 支持。除此之外,它的效果很好。
【解决方案2】:

如果您使用 include 过程创建 php 文件以包含页眉和页脚内容,然后使用 php 命令运行它们,它会将 html 输出到标准输出

【讨论】:

  • php 仍然是服务器端解决方案
  • 不,您可以在客户端上运行它并像我在答案中所说的那样保存输出
【解决方案3】:

MovableType 有静态文件发布模式

【讨论】:

  • 好消息,但不应该是评论吗?
  • 没有。在 Stack Overflow 上,大多数建议的答案都是作为答案而不是 cmets 发布的。
【解决方案4】:

嗯,我使用 Microsoft 的一个名为 Expression Studio 4 的程序。它允许我创建带有页眉、页脚和其他我知道是静态的东西的网站模板。

我想这就是你想要的。 Youtube Video 因为你想在上传到网络服务器之前创建它。

【讨论】:

  • 您能否添加一些代码,因为如果您引用链接,那么它可能会在将来被删除,然后您的答案将毫无用处。
【解决方案5】:

使用 iframe 标签。搜索 iframe 的 JQuery 插件,例如 http://jframe.co.uk/
或者您可以使用 javascript 模板引擎。例如https://github.com/BorisMoore/jquery-tmpl

更新 1
您可以将页面的静态部分(例如页眉和页脚)放在模板中,并在加载页面上将其呈现在 body 中的某个标签上。


只需将标头的 HTML 代码保存在 js 文件中的变量中。并在 onload 设置标题内部 HTML 。

第 1 页

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <script type="text/javascript" src="layout.js" ></script>
</head>
<body>
    <div id="content">page 1</div>
</body>
</html>

第 2 页

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <script type="text/javascript" src="layout.js" ></script>
</head>
<body>
    <div id="content">
    page 2
    </div>
</body>
</html>

layout.js

   function  mylayout(){
    var _body = document.getElementsByTagName('body') [0];
    var s = '<li>text</li>';

    var header_div = document.createElement('div');
    header_div.innerHTML  = "<p> this is <b style=\"color: blue\"> header</b><br><a href=\"page1.htm\">page1</a> <a href=\"page2.htm\">page2</a></p>";

    var footer_div = document.createElement('div');
    footer_div.innerHTML  = "<p> this is <b style=\"color: red\"> footer</b></p>";

    if (_body.firstChild){
        _body.insertBefore(header_div, _body.firstChild);
    }else{
        _body.appendChild(header_div);
    }

    _body.appendChild(footer_div);
}

window.onload = function() {
    mylayout();
};

【讨论】:

  • 如前所述,我想避免使用 iframe 作为解决方案
猜你喜欢
  • 2019-02-28
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-13
  • 1970-01-01
相关资源
最近更新 更多