Gruntjs 在每个组件中更改部分
我刚开始使用Assembly,目前有以下代码: default.hbs:Gruntjs 在每个组件中更改部分,gruntjs,yaml,assemble,Gruntjs,Yaml,Assemble,我刚开始使用Assembly,目前有以下代码: default.hbs: {{#each default.articles}} {{> layout }} {{/each}} 和default.yml: articles: - article: title: Test 1 image: image_path description: test 1 reamore: link color: FFF lay
{{#each default.articles}}
{{> layout }}
{{/each}}
和default.yml:
articles:
- article:
title: Test 1
image: image_path
description: test 1
reamore: link
color: FFF
layout: single
- article:
title: Test 2
image: image_path
description: test 2
reamore: link
color: 000
layout: double
如何使用yml数据中的布局来定义要使用的部分
例如,如果yml中的布局是double,则需要加载double.hbs partial,以此类推。这有可能吗?还是我的做法完全错了
任何帮助都会很棒 我认为布局在YML中是一个保留字,因为您可以为每个页面指定特定的布局。您可能需要尝试重命名值布局,并输入部分eg double.hbs的全名
我还没有亲自尝试过,所以不能100%确定。在车把中,您不能动态选择部分,但您可以创建一个帮助器来执行此操作:
Handlebars.registerHelper('partial', function (key) {
var partial = Handlebars.partials[key];
if (partial) {
var fn = Handlebars.compile(partial);
var tmpl = fn(this);
return new Handlebars.SafeString(tmpl);
}
throw new Error('Partial ' + key + ' is not registered with Handlebars');
});
然后使用帮助器:
{{#each default.articles}}
{{partial this.layout}}
{{/each}}
layout
仅当它位于页面中front matter对象的根目录下或在主选项上设置时才使用。