docpad:渲染后使用partials?

时间:2013-07-24 20:20:30

标签: docpad

我正在构建一个插件来生成站点范围的菜单;这些菜单的数据来自扫描渲染的DOM * .html.md文件;但我只在一个地方(网站的根目录)使用菜单。

插件当前在writeBefore中生成此菜单的每个页面的一部分,当我遍历集合,处理每个文档并将文件写入partials目录时,它可以正常工作。

但是由于那时候文档已经全部呈现,<% - @ partial('foo.html')%>在我的index.html.eco中调用不起作用,除非我运行docpad generate两次。

我认为如果我将renderPasses设置为值> 1,然后部分将在>上被拾取。 1次通过,但这不会发生。

是否有一个事件我可以在初始渲染之后使用(因此有一个要解析的DOM),但在部分被渲染之前

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用renderDocument事件(针对每个文档触发,以及针对文档具有的每个布局)或renderAfter事件。但我认为你可能会遇到同样的问题。

让菜单需要其他文件的渲染内容的原因是什么?正如您可以使用text plugin能够呈现元数据属性一样,并且在呈现之前可以访问这些元数据属性。 E.g。

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

然后在你的菜单或其他

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

这将与预期的一样,元数据属性通过文本插件使用markdown呈现。