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 Web サイトのルート フォルダーに移動し、次を実行します。

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 に答える