2016-04-04 15 views
1

に基づいて特定の_dataデータを取得する:私は何をしたいかジキルは、私は、データのフォルダ構造を持つ名前

_data/footer/1.yml _data/footer/2.ymlなど

は前付変数に基づいて、テンプレート内にあるにあります、それらのファイルの1つを選択し、それらに含まれるデータを返します。

この場合、 site.data.footer.1は、1.ymlを含むデータを返します。私はsite.data.footer.{{page.footer}}を実行しようとした場合には、フロントの問題は、このように1に設定されフッタ変数を持っていても、何も返さない:この場合

--- 
footer: 1 
--- 
{% assign foot_id = page.footer %} 
{{foot_id}} 
{% assign stuff = site.data.footer.{{foot_id}} %} 
{{stuff}} 

stuffが空白になります。これを行う正しい方法ですか?何がうまくいかない?

答えて

3

私たちはあなた件のデータを見れば:

site.data.footer = {"1"=>{"variable"=>"one"}, "2"=>{"variable"=>"two"}} 

我々はハッシュを持っているキーは文字列ですました。

我々はこのように私たち件のデータにアクセスすることができます:ブラケット表記はキーとして文字列を取ること

{{ site.data.footer.1 }} => {"variable"=>"one"} 
or 
{{ site.data.footer["1"] }} => {"variable"=>"one"} 

注意。整数を試すと、何も返されません。{{ site.data.footer[1] }} => null

page変数を使用する場合は、文字列にする必要があります。これは、ことができます:

--- 
# a string in the front matter 
footer: "1" 
--- 

{{ site.data.footer[page.footer] }} => {"variable"=>"one"} 

または整数を文字列に

--- 
# a string in the front matter 
footer: 1 
--- 

Transform an integer to a string by adding it an empty string 
{% assign foot_id = page.footer | append: "" %} 

{{ site.data.footer[foot_id] }} => {"variable"=>"one"} 

注意キャスト:あなたも、このように文字列を整数にキャストすることができます。

{% assign my_integer = "1" | plus: 0 %} 
{{ my_integer | inspect }} => 1 but not "1" 
+0

は、うん、これは問題を解決しました。どうもありがとう。 –

関連する問題