0

サイト全体のメニューを生成するプラグインを構築しています。これらのメニューのデータは、レンダリングされた DOM をスキャンして *.html.md ファイルを探します。ただし、メニューは 1 か所 (サイトのルート) でのみ使用します。

プラグインは現在、このメニューの各ページの部分を で生成しますwriteBefore。これは、コレクションをウォークし、各ドキュメントを処理し、パーシャル ディレクトリにファイルを書き込むと正常に動作します。

しかし、ドキュメントはその時点までにすべてレンダリングされているため、index.html.eco での <%- @partial('foo.html')%> 呼び出しは、docpad generate2 回実行しない限り機能しません。

renderPasses値 > 1 に設定すると、パーシャルが > 1 パスで取得されると想定しましたが、そうはなりません。

最初のレンダリングの後(解析する DOM があるため) で、パーシャルがレンダリングされる前に使用できるイベントはありますか?

ありがとう。

4

1 に答える 1

0

renderDocumentイベント (ドキュメントごと、およびドキュメントのレイアウトごとに発生) またはイベントを使用できますrenderAfter。しかし、私はあなたが同じ問題を抱えている可能性があると思います。

メニューが他のファイルのレンダリングされたコンテンツを必要とする理由は具体的に何ですか? テキストプラグインを使用して、メタデータ属性をまったく同じようにレンダリングし、レンダリング前にそれらのメタデータ属性にアクセスできるようにすることができます。例えば

---
someMarkdown: "<t render="markdown">*hello*</t>"
---

次に、メニューなどで

<ul><% for page in @getCollection('html').toJSON(): %>
  <li><%- page.someMarkdown %></li>
<% end %></ul>

これは、テキスト プラグインによってマークダウンでレンダリングされるメタ データ プロパティで期待どおりに機能します。

于 2013-07-28T13:06:29.917 に答える