2016-04-04 24 views
1

dayalı özel _data veri almak bir veri klasör yapısı vardır:Jekyll bir isim

_data/footer/1.yml _data/footer/2.yml vb

Ne yapmak istediğiniz ön madde değişkeni temel alarak, şablona dahilinde olduğunu, Bu dosyalardan birini seçin ve içinde bulunan verileri döndürün.

Bunu yaparsam: site.data.footer.1 Veriler, 1.lm ile birlikte verilir. Ben site.data.footer.{{page.footer}} yapmaya çalışırsanız ön mesele böyle 1 olarak ayarlanmış altbilgi değişkeni sahip olsa bile, hiçbir şey döndürür: Bu durumda

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

stuff boş olurdu. Bunu yapmanın doğru yolu bu mu? Neyin yanlış gidiyor?

cevap

3

biz veriler bakarsak:

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

bir karma tuşları dizelerdir vardı var.

Böyle bizim verileri erişebilirsiniz: braket notasyonu anahtarı olarak bir dize alır

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

Not. Bir tam sayı ile denerseniz, hiçbir şey {{ site.data.footer[1] }} => null döndürür.

page değişkenini kullanmak istiyorsak, bunun bir dizge olması gerekir. Şu olabilir:

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

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

veya bir tamsayı dizeye

--- 
# 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"} 

Not döküm: Ayrıca böyle bir tamsayı bir dize yayınlayabilirsiniz:

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

Yep bu sorunu çözdü. Çok teşekkürler. –