简单的PHP包含Grunt(或替代)


Simple PHP include with Grunt (or alternative)

我正在修改Yeoman的"webapp"构建并自定义它以满足我的需求。

我想做简单的包括重复的模式在整个网站,如页眉和页脚。我涉猎了一下杰基尔,但我担心它对我的需求来说有点太复杂了。

我目前正在使用PHP include,但这与Grunt不兼容。

是否有一个简单的替代PHP包含或有Grunt运行PHP的方法?什么是最佳实践?

如果你真的对Jekyll感到困惑,只需花一个小时浏览一下网站,你就会获得超能力。这是用于模板的纯html +用于逻辑的少量液体,仅此而已。

我真的觉得这比那些自耕农、咕噜的东西简单多了。

我的两分钱

我既不知道Yeoman也不知道Grunt,但就像David Jacquel已经在他的回答中说的那样:使用Jekyll制作全局页眉和页脚是非常简单的

您需要一个布局文件,它只是一个带有占位符的HTML文件,位于/_layouts文件夹(参见目录结构):

我叫它default.html,所以完整的路径是:/_layouts/default.html

<!DOCTYPE html>
<html>
<head>
    <title>{{ page.title }}</title>
</head>
<body>
    <div>
    YOUR HEADER HERE
    </div>
    <div>
    {{ content }}
    </div>
    <div>
    YOUR FOOTER HERE
    </div>
</body>
</html>
  • {{ content }}是插入实际页面内容的地方。
  • {{ page.title }}为页面标题(需要在每个页面中定义)

然后,您需要创建一个实际的页面。您可以使用HTML或Markdown:

/index.html:

---
layout: default
title: page title here
---
Some <strong>text</strong>

…or /index.md:

---
layout: default
title: page title here
---
Some **text**
  • 开头的---部分为YAML Front-matter。
  • layout: default行指的是前面创建的/_layouts/default.html文件。
  • title: ...行将插入布局文件中的{{ page.title }}占位符。

最终结果,无论你使用HTML还是Markdown,将创建为/index.html,看起来像这样:

<!DOCTYPE html>
<html>
<head>
    <title>page title here</title>
</head>
<body>
    <div>
    YOUR HEADER HERE
    </div>
    <div>
    Some <strong>text</strong>
    </div>
    <div>
    YOUR FOOTER HERE
    </div>
</body>
</html>

如果你想让布局更模块化,你也可以将自定义页眉和页脚移动到单独的include文件中。
将布局文件更改为:

<!DOCTYPE html>
<html>
<head>
    <title>{{ page.title }}</title>
</head>
<body>
    {% include header.html %}
    <div>
    {{ content }}
    </div>
    {% include footer.html %}
</body>
</html>

两个{% include ...行指向/_includes文件夹中的文件,因此您可以创建/_includes/header.html/_includes/footer.html,并将所需的HTML放入这些文件中。