Перебирая подкаталоги в yeoman и собери
Я очень новичок в Yeoman и Assemble, и я пытаюсь построить структуру навигации с подкаталогами. Я могу перебрать главные страницы в каталоге templates/pages с помощью этого:
{{#each pages}}
<li{{#if this.isCurrentPage}} class="active"{{/if}}>
<a href="{{relative dest this.dest}}">{{ data.title }}</a>
</li>
{{/each}}
Конечно, это не учитывает подкаталоги в каталоге страниц. Вот как выглядит задача сборки моего 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']
}
}
}
Я хочу получить вложенный список, который бы отображал страницы в подкаталоге. Есть ли какой-то простой способ сделать это в цикле, или мне нужно подумать о жестком кодировании этого?
1 ответ
Вы должны удалить 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}}