我有一个json数据文件,其中包含多个带有命名键的对象。
{
"berlin:" : {
"location": "Berlin",
"folder": "berlin-2016"
},
"seattle" : {
"location": "Seattle ",
"folder": "seattle-2016"
}
}
在我的内容文件中,我想指定要使用的模型中的哪个对象,然后在swig中引用它。像这样:
---
model:
conference: conferences['berlin']
---
{{ model.conference.location }}
这可能吗?
答案 0 :(得分:0)
这绝对可以与metalsmith合作。我没有完整的构建过程图,但对于此解决方案,您必须使用metalsmith javascript api:
./ data.json
{
"berlin:" : {
"location": "Berlin",
"folder": "berlin-2016"
},
"seattle" : {
"location": "Seattle ",
"folder": "seattle-2016"
}
}
./ build.js
// Dependencies
var metalsmith = require('metalsmith');
var layouts = require('metalsmith-layouts');
// Import metadata
var metadata = require('./data.json');
// Build
metalsmith(__dirname)
// Make data available
.metadata(data)
// Process templates
.use(layouts('swig'))
// Build site
.build(function(err){
if (err) throw err;
});
然后在根项目文件夹中运行node build.js
进行构建。在您的模板中,来自data.json
的数据将以{{ berlin.location }}
形式提供。
您也可以在没有javascript api的情况下执行此操作(我不建议这样做会因为您失去一些灵活性),在这种情况下您将使用插件(例如:metalsmith-json)