您可以使用支持模板繼承的語言來執行多個內容區域,例如swig,並結合metalsmith-in-place。
不使用降價,你可以這樣做是這樣的:
的src/index.swig
{% extends 'templates/default.swig' %}
{% block about %}
Content for about
{% endblock %}
{% block faq %}
Content for faq
{% endblock %}
模板/ default.swig
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
</head>
<body>
<section id="about">
{% block about %}{% endblock %}
</section>
<section id="faq">
{% block faq %}{% endblock %}
</section>
</body>
</html>
build.js
/**
* Dependencies
*/
var filenames = require('metalsmith-filenames');
var inPlace = require('metalsmith-in-place');
var metalsmith = require('metalsmith');
/**
* Build
*/
metalsmith(__dirname)
// Process templates
.use(filenames())
.use(inPlace('swig'))
// Build site
.build(function(err){
if (err) throw err;
});
然後運行node build.js
。現在如果你想使用減價,這是不可能的。標記爲metalsmith-markdown的渲染器將用<p>
s圍繞您的內容,逃避某些角色等等。由於metalsmith-markdown可能會破壞swig標籤,這會使維護模板變得麻煩。它可能仍然有效,但我絕對不會推薦它。
所以我推薦的是上面的設置。您將失去使用降價的優勢,但可以獲得一些額外的組織選項。這取決於你決定你更喜歡哪一個。
我最終使用了metalsmith-data-markdown直接在html中放置多個標記區域。不理想,但它符合我的需求。接受答案,因爲這是一個很好的答案。 – andyhasit