2012-05-20 19 views
5

Ich möchte dynamische Variablen für meine jekyll + liquid Installation verwenden. Ich möchte dynamisch auf die Datei _config.yml mit der dynamischen Variablen Namen zugreifen.Dynamische Variablen Jekyll Liquid

Es wird am besten mit einem Beispiel erläutert:

Seite:

--- 
layout: default 
title: title_homepage 
--- 

Standard-Layout:

{{ site.locales[site.default_locale].page.title }} 

_config.yml:

default_locale: "en" 

locales: 
    en: 
    title_homepage: "This is my homepage title!" 
    pirate: 
    title_homepage: "Yaaawwwr. Homepage title." 

Wie kann ich auf _config.yml mit einem dynamischen Variablennamen zugreifen?

+0

Um sicherzustellen, dass ich klar bin. Ihre Datei '_config.yml' wird immer genau so benannt. Um die Änderung vorzunehmen, aktualisieren Sie die Variable 'default_locale' innerhalb von '_config.yml' von 'en' auf 'pirate'. An diesem Punkt, wenn Sie jekyll ausführen, möchten Sie, dass die Ausgabe in Ihrem Standardlayout "Yaaawwwr. Homepage title" anzeigt. statt "Das ist mein Homepagetitel!". Ist das genau? –

+0

Hallo Alan, ja. das ist richtig.Dann erzeuge ich eine _site für en, eine andere für _pirate – Hendrik

Antwort

3

Der Titel, den Sie ziehen möchten, ist die Site-Konfiguration. Nicht die Seite selbst. „Das ist meine Homepage Titel“

{{ site.locales[site.default_locale].title_homepage }} 

Wenn Sie die Ausgabe wird eingestellt default_locale: "en": Alles, was Sie tun müssen, ist das Gespräch in Ihrem Standard-Layout der Anzeige ändern. Wenn Sie die Datei _config.yml auf default_locale: "pirate" aktualisieren, lautet die Ausgabe "Yaaawwwr. Homepage title". Ich habe dies auf Jekyll 0.11.2 getestet und es funktioniert wie erwartet.

+0

danke für die Idee. aber das würde mich immer noch vor das Problem stellen, dass ich mehrere Layouts für mehrere Seiten definieren muss. Ich möchte den Seitentitel innerhalb der Seite definieren. Option 1: Übersetze den Seitentitel innerhalb der YAML-Vorderseite der Seite, oder Option 2: übersetze ihn dynamisch im Standardlayout. – Hendrik

+0

Ah. Ich dachte, Sie suchten nach einem globalen Titel, der in der Datei _config.yml definiert wurde. Ich denke, dass diese Frage immer noch nützlich ist. Ich schlage vor, dass wir das hier belassen und eine neue Frage erstellen, die sich darauf konzentriert, eine Einstellung in _config.yml zu verwenden, um Titel zu ändern, die auf jeder Seite/jedem Post einzeln definiert werden. –

+0

Bitte sehen Sie hier: http:// Stackoverflow.com/questions/10750755/jekyll-liquid-accessing-config-yml-dynamically – Hendrik

0

Jekyll ist ein statischer Webseitengenerator, der eine Variable nicht verarbeiten kann. Aber ich denke, für das Gebietsschema selbst gibt es eine einfache Lösung.

Folgen Sie dieser Dateistruktur (oder so ähnlich):

root 
    - _include 
    home.html 
    - _layout 
    default.html 
    - en 
    index.html 
    - pirate 
    index.html 
    index.html 

Das einfache, jetzt verwenden sind für {{content}} und erstellen Sie einfach Dateien mit Variablen und einer einzigen Zeile {% umfassen index.html %}

_include/index.html:

<h1>{{page.title}}</h1> 

en/index.html:

--- 
layout: default 
title: "This is my homepage title!" 
--- 
{% include home.html %} 

Pirat/index.html:

--- 
layout: default 
title: "Yaaawwwr. Homepage title." 
--- 
{% include home.html %} 

So ... das ist es.

nun eine Seite Variable erstellen locale Urls für jede Seite zu handhaben ....

ich diese Hilfe hoffen.

Verwandte Themen