2013-06-22 14 views
6

Myślę, że natywny sposób zarządzania stronami Jekyll, tj. Poprzez tworzenie plików/folderów .md w folderze głównym, jest nieco brudny.Pokaż strony pod jednym folderem w Jekyll?

Dlatego chcę umieścić, każdą stronę, którą chcę pokazać, w folderze o nazwie "strony". Dodatkowo chciałbym te strony mają kaskadowy strukturę: powiedzieć, czy mój folder ma strukturę:

pages 
|-> parent1 
     |-> index.html 
     |-> son1.html 
     |-> son2.html 
|-> parent2 
     |-> index.html 

Następnie na stronie strony z wykazu, powinno być coś takiego:

page listing 
* parent1 
    * son1 
    * son2 
* parent2 

Ponadto drugi plik * .html, który nie znajduje się w folderze stron, nie powinien być wyświetlany na tej stronie z listą stron.

Jak mam to zrobić?

Wielkie dzięki.

Odpowiedz

1

Nic ci nie przeszkadza. W powyższym scenariuszu twoja_domena.tld/pages/prent1/son1.html będzie adresem URL pliku parent1/son1.

Tworzenie zagnieżdżonego wpisu będzie jednak bardziej skomplikowane. Możesz albo epscify tę strukturę w materiale YAML, albo użyć postów.

pages 
|-> parent1 
    |-> _posts/ 
     |-> index.html 
     |-> son1.html 
     |-> son2.html 
|-> parent2 
    |->_posts 
     |-> index.html 

=> W ten sposób pliki będą postów w kategoriach parent1 i parent2 i można utworzyć listę wyświetlając kategorie i ich zawartości.

Jeśli naprawdę chcesz wyświetlić strukturę drzewa bez używania wpisów i kategorii, musisz zrobić więcej czarnej magii. Ale na szczęście Liquid oferuje filtr split, który można wykorzystać do podziału ścieżki witryny na porcje, np.

{% for page in site.pages %}    
    {{ page.url | split:'/' | join:'+'}} 
{% endfor %} 

Zamiast łącząc je (jest to czysto dla demonstartion), że chcesz, aby wypełnić tablicę, która posiada strukturę drzewa, a później na iteracyjne nad tej tablicy do wyświetlenia drzewa katalogów. Jest to możliwe, ale nie łatwe. I nie sądzę, żeby coś było łatwo dostępne.

Prawdopodobnie pisanie wtyczki jest łatwiejsze.

Powiązane problemy