0

我有一个 json 数据文件,其中包含多个对象,其中包含命名键。

{
  "berlin:" : {
    "location": "Berlin",
    "folder": "berlin-2016"
  },
  "seattle" : {
    "location": "Seattle ",
    "folder": "seattle-2016"
  }
}

在我的内容文件中,我想指定模型中要使用的对象,然后在 swig 中引用它。像这样的东西:

---
model:
  conference: conferences['berlin']
---    

{{ model.conference.location }}

这可能吗?

4

1 回答 1

0

金属匠绝对可以做到这一点。我没有您构建过程的完整图片,但对于此解决方案,您必须使用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

于 2016-05-04T12:10:28.940 回答