我是Yeoman和Assemble的新手,我正在尝试使用子目录构建导航结构。我可以使用以下内容遍历templates / pages目录中的主页:
{{#each pages}}
<li{{#if this.isCurrentPage}} class="active"{{/if}}>
<a href="{{relative dest this.dest}}">{{ data.title }}</a>
</li>
{{/each}}
当然,这并不考虑pages目录中的子目录。这就是我的Gruntfile的汇编任务:
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']
}
}
}
我想要的是最终得到一个嵌套列表,该列表将公开子目录中的页面。在循环中有没有任何一些直接的方法,或者我需要考虑硬编码吗?
答案 0 :(得分: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}}