使用Assemble从不同的集合中获取“页面”

时间:2013-08-02 10:54:33

标签: handlebars.js gruntjs template-engine assemble

假设我有一个集合中的页面,我想列出来自不同页面集合的每个yaml标记。 如果他们在同一个集合中,这就可以解决问题:

<section class="see-also">
<header>Related Contents:</header>
   {{#each tags}}
   <p>In <span class="tag">{{tag}}</span>:</p>
      {{#each pages}}
        <li><a href="{{relative ../../../page.dest dest}}">{{data.title}}</a></li>
      {{/each}}
   {{/each}}
 </section>

但是,由于我试图从另一个页面访问此集合,这怎么可能实现呢?

2 个答案:

答案 0 :(得分:1)

我建议为此创建一个custom helper。由于没有简单的方法来编写一个帮助程序,它将按照您为特定设置描述的方式工作,因此以下是一个很好的示例,说明如何使用自定义帮助程序来解决类似的问题:https://github.com/assemble/assemble/issues/254

答案 1 :(得分:0)

如果我有这个用例,我可能会把这些页面放在&#39; yaml在单独的yml文件中而不是嵌入在页面上。

如果在gruntfile中包含数据文件的路径:

assemble: {
  options: {
    data: ['<%= site.data %>', 'data/*.yml']
  }
}

您的文件结构包括:

── data
│   └── page1.yml
│   └── page2.yml

您可以从任何地方访问{{#each page1.pages}}

或者您可以拥有一个shared.yml文件,其中包含所引用的页面集合等信息,其余数据保留在每个页面上。

更多资源: