3

我是 Yeoman 和 Assemble 的新手,我正在尝试使用子目录构建导航结构。我可以通过以下方式遍历模板/页面目录中的主页:

{{#each pages}}
   <li{{#if this.isCurrentPage}} class="active"{{/if}}>
      <a href="{{relative dest this.dest}}">{{ data.title }}</a>
   </li>
{{/each}}

当然,这不包括 pages 目录中的子目录。这就是我的 Gruntfile 的 assemble 任务的样子:

assemble: {
  pages: {
    options: {
      flatten: true,
      assets: '<%= config.dist %>/assets/',
      layout: '<%= config.src %>/templates/layouts/default.hbs',
      data: '<%= config.src %>/data/*.{json,yml}',
      partials: '<%= config.src %>/templates/partials/*.hbs',
      plugins: ['assemble-contrib-permalinks'],
    },
    files: {
      '<%= config.dist %>/': ['<%= config.src %>/templates/pages/**/*.hbs']
    }
  }
}

我想要的是最终得到一个嵌套列表,该列表将在子目录中公开页面。在循环中是否有任何直接的方法可以做到这一点,或者我是否需要考虑硬编码?

4

1 回答 1

3

您需要flatten: true从选项中删除并修改您的pages.files

files: [
    { expand: true, cwd: '<%= config.src %>/templates/pages', src: ['**/*.hbs'], dest: '<%= config.dist %>' }
]

由于您使用的是永久链接插件,因此只需添加到您的末尾pages.option

plugins: ['assemble-contrib-permalinks'],
permalinks: {
    preset: 'pretty'
},

现在,您的导航应该如下所示:

{{#each pages}}
<li{{#if this.isCurrentPage}} class="active"{{/if}}>
  <a href="{{basename}}/index.html">{{ data.title }}</a>
</li>
{{/each}}
于 2014-03-03T02:58:17.453 回答