2012-05-20 5 views
5

Chciałbym użyć zmiennych dynamicznych do mojej instalacji z powłoką jekyll + ciecz. Chcę uzyskać dynamiczny dostęp do pliku _config.yml przy użyciu nazw zmiennych dynamicznych .Zmienne dynamiczne Jekyll Liquid

Jest najlepiej wytłumaczyć na przykładzie:

strona:

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

Układ Domyślnie:

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

Jak uzyskać dostęp do _config.yml przy użyciu nazwy zmiennej dynamicznej?

+0

Aby się upewnić, że jestem czysty. Plik "_config.yml" zawsze będzie nazywał się dokładnie tym. Aby wprowadzić zmiany, zaktualizujesz zmienną 'default_locale' w '_config.yml' z 'en' na 'pirate'. W tym momencie, gdy uruchomisz jekyll, chcesz, aby wyjście w twoim domyślnym układzie wyświetlało "Yaaawwwr. Tytuł strony głównej". zamiast "To jest moja strona tytułowa!". Czy to jest dokładne? –

+0

Cześć Alan, tak. to jest poprawne.Potem wygeneruję jedno _site dla en, drugie dla _pirate – Hendrik

Odpowiedz

3

Tytuł, który chcesz pobrać, to konfiguracja witryny. Nie sama strona. Wszystko, co musisz zrobić, to zmienić połączenia w układzie domyślnym nieruchomość to:

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

Po ustawieniu default_locale: "en" wyjście będzie „To jest moja strona tytuł!”. Po zaktualizowaniu pliku _config.yml do default_locale: "pirate", wynikiem będzie "Yaaawwwr. Tytuł strony głównej." Przetestowałem to na Jekyll 0.11.2 i działa zgodnie z oczekiwaniami.

+0

dzięki za pomysł. ale nadal pozostawi mi to problem polegający na tym, że muszę zdefiniować wiele układów dla wielu stron. Chciałbym zdefiniować tytuł strony na stronie. Opcja 1: Przetłumacz tytuł strony w przedniej części strony YAML lub opcję 2: dynamicznie przetłumacz to w domyślnym układzie. – Hendrik

+0

Ah. Myślałem, że szukasz globalnego tytułu, który został zdefiniowany w pliku _config.yml. Myślę, że to pytanie jest nadal przydatne. Moja sugestia jest taka, że ​​zostawiamy tę, tak jak jest i tworzymy nowe pytanie, które koncentruje się na używaniu ustawienia w _config.yml do zmiany tytułów, które są definiowane indywidualnie na każdej stronie/poście. –

+0

Proszę zobaczyć tutaj: http://stackoverflow.com/questions/10750755/jekyll-liquid-accessing-config-yml-dynamicznie – Hendrik

0

Jekyll jest statycznym generatorem stron internetowych, którego nie można wypisać zmiennej. Ale domyślam się, że jest to samo proste rozwiązanie.

Śledź tę strukturę pliku (czy coś takiego):

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

To proste, teraz wykorzystać to dla {{content}} i tworzenie prostych plików ze zmiennymi i jedna linia {% to index.html %}

_include/index.html:

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

pl/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 %} 

Tak ... to jest to.

Teraz utworzyć zmienną stronę do obsługi adresów URL lokalizacyjnych dla każdej strony ....

Mam nadzieję, że to pomoże.