2

我有这样的设置:

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值而不是contentRendered.

谁能解释我在收藏版本中做错了什么?是否write: false阻止文档被包含在集合中?

4

2 回答 2

1

有一个插件可以在渲染过程之后将文件组合在一起。

使用非常简单,在此处获取 -> 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
于 2013-11-20T03:59:45.487 回答
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看到完整的源代码)

于 2014-11-03T19:38:44.807 回答