2016-04-20 26 views
1

我有一個json數據文件,其中包含具有指定鍵的多個對象。使用Metalsmith和swig訪問模型中的單個對象

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

在我的內容文件中,我想指定要使用的模型中的哪個對象,然後在swig中引用該對象。類似這樣的:

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

{{ model.conference.location }} 

這可能嗎?

+0

您可以使用自定義插件做你想做的事。 – Luksprog

回答

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