2016-05-31 11 views
0

Ich habe eine Sammlung von Komponenten in meiner Website, sie sind mit Inhalten gefüllt, die von Variablen in einer .yml-Datei angegeben werden.Wie überschreiben (verschachtelte) Jekyll-Variablen?

site.components/button.html

--- 
title: Button 
--- 
{% assign yml = 'sample' %} 
<a href="#">{{ site.data.[yml].button }}</a> 

Daten/sample.yml

#variables 
button: Click Me 

Wenn ich öffnen Sie die URL /button.html die Variable funktioniert gut:

#Page Output 
<html> 
    <a href="#">Click Me</a> 
</html> 

F: Gibt es eine Möglichkeit, die Variable zu überschreiben, wenn die Komponente in einer Seite verwendet wird? zB:

--- 
title: A Sample Page 
--- 
{% assign yml = 'content'%} 
{{ site.components | where:"title" : "Button" }} 

Daten/content.yml

#variables 
button: Join Now 

/sample-page.html

#Page Output 
<html> 
    <a href="#">Join Now</a> 
</html> 

Beachten Sie die Komponenten nicht enthält.

Antwort

2

Antwort ist NEIN.

Wenn Sie eine {{ site.components | where:"title" : "Button" }} tun, erhalten Sie eine Reihe von Jekyll Dokumente, die den Titel entsprechen. Diese Dokumente sind bereits flüssig geparst. Sie können Jekyll nicht anweisen, sie erneut zu analysieren.

Die einzige Möglichkeit ist die Verwendung von Includes und die Übergabe von Variablen.

_includes/button.html

<a href="#">{{ site.data.[include.text].button }}</a> 

_components/button.html

--- 
title: Button 
--- 
{% include button.html text='sample' %} 

sample-seite.html

--- 
title: A Sample Page 
--- 
{% include button.html text='content' %}