我有这样的设置:
portfolio.html.eco
portfolio/
- project1.html.md
- project2.html.md
- etc.
我希望将这些内容合并到portfolio.html
目录中的单个大out/
文件中。我的所有项目文件都有write: false
元数据,阻止它们被写入。
我已尝试在portfolio.html.eco
中对此进行一些修改,但它们似乎都是空集:
<% for project in @getCollection("documents").findAll({relativePath: 'portfolio'}).toJSON() %>
但我总是得到一个空列表。我也试过这个:
@getFilesAtPath('portfolio/')
它确实为我提供了正确的内容,但尚未呈现。更新:已呈现,我使用的是body
值,而不是{{1} }。
任何人都可以解释我对收藏版本的错误吗?让contentRendered
阻止文档被包含在集合中吗?
答案 0 :(得分:1)
有一个插件在渲染过程后将文件组合在一起。
使用非常简单,在此处获取 - &gt; docpad-plugin-combiner
它如何运作的一个例子:
文件1:
---
combine: true
outPath: portfolio.html
---
#Title 1
文件2:
---
combine: true
outPath: portfolio.html
---
#Title 2
要安装,请转到docpad网站根文件夹并运行:
npm install --save docpad-plugin-combiner
答案 1 :(得分:1)
我最终要做的是从文件中删除write: false
,然后首先创建集合,然后以编程方式将write: false
添加到文档中的文档之后:
module.exports = {
collections: {
projects: function() {
var projects = this.getFilesAtPath('projects', [{filename:1}]);
projects.each(function(project) {
project.setMetaDefaults({'write': 'false'});
});
projects.on("add", function (model) {
model.setMetaDefaults({'write': 'false'})
});
return projects;
},
// ...
(您可以在https://github.com/nfriedly/nfriedly.com/blob/master/docpad.js#L81)
看到完整的来源