2012-05-20 13 views
5

Jekyll + sıvı kurulumum için dinamik değişkenler kullanmak istiyorum. Dinamik değişken adlarını kullanarak _config.yml dosyasına dinamik olarak erişmek istiyorum.Dinamik Değişkenler Jekyll Liquid

En iyisi bir örnekle açıklanmıştır:

Sayfa:

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

Standart Düzen:

{{ 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." 

_config.yml dosyasına dinamik değişken adıyla nasıl erişebilirim?

+0

Emin olduğumdan emin olmak için. '_config.yml' dosyası her zaman tam olarak adlandırılacaktır. Değişikliği yapmak için 'default_locale' değişkenini '_config.yml' içindeki 'en' ile 'korsan' arasında güncelleyeceksiniz. Bu noktada, jekyll'i çalıştırdığınızda, varsayılan düzeninizdeki çıktının "Yaaawwwr. Anasayfa başlığı" nı göstermesini istersiniz. "Bu benim ana sayfam başlık!" yerine. Bu doğru mu? –

+0

Merhaba Alan, evet. bu doğru.Sonra tr için bir _Site, fikir için _pirate – Hendrik

cevap

3

Çekmek istediğiniz başlık site yapılandırmasını oluşturur. Sayfa kendisi değil. Tek yapmanız gereken tek şey bu girişinizin Standart Düzeni aramayı değiştirmek şudur: çıkış olacaktır default_locale: "en" ayarladığınızda

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

"Bu benim ana sayfa başlığıdır!". _config.yml dosyasını default_locale: "pirate"'a güncellediğinizde, çıktı "Yaaawwwr. Ana başlık" olacaktır. Bunu Jekyll 0.11.2'de test ettim ve beklendiği gibi çalışıyor.

+0

teşekkür için başka bir ad oluştururuz. ama bu hala birden fazla sayfa için birden düzenleri tanımlamak zorunda sorun bana bırakacaktı. Sayfa başlığını Sayfa içinde tanımlamak istiyorum. 1. Seçenek: Sayfa başlığını sayfanın YAML ön öğesinin içine çevirin veya seçenek 2: dinamik olarak varsayılan düzende çevirin. – Hendrik

+0

Ah. Sana _config.yml dosyasında tanımlanan global başlık aradığını sanıyordum. Bu sorunun hala yararlı olduğunu düşünüyorum. Benim önerim, bunu olduğu gibi bırakmak ve her sayfada/postada ayrı ayrı tanımlanmış başlıkları değiştirmek için _config.yml'deki bir ayarı kullanmaya odaklanan yeni bir soru oluşturmak. –

+0

Lütfen buraya bakın: http://stackoverflow.com/questions/10750755/jekyll-liquid-accessing-config-yml-dynamically – Hendrik

0

Jekyll, statik bir web sitesi üreticisi olup, bize bir değişkene sahip değildir. Ama sanırım yerel olarak kendi için, basit bir çözüm var.

(veya böyle bir şey) bu dosya yapısı izleyin:

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

, şimdi basit {{content}} için kullanıyorum, örneğin oluşturup basit dosyaları değişkenlerle ve bir tek satır {% index.html dahil That %}

_include/index.html:

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

en/index.html:

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

korsan/index.html:

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

Yani ... o kadar.

Şimdi

Ben bu yardımı umut .... her sayfa için yerel URL'ler işlemek için bir sayfa değişken oluşturmak.