Tworzenie serii artykułów

Chcę tworzyć na swoim blogu serie artykułów dotyczączych projektu bądź jakiegoś zagadnienia. Mogłabym użyć tagów, ale one co do zasady tylko wspomagają ustalenie semantyki strony, sugerują rodzaj treści, natomiast przynależność do serii jest dla artykułu czymś bardzo konkretnym, wręcz niezmienialnym.
Kiedy widziałam zestawienia typu ten wpis jest częścią serii
, to zawsze zastanawiałam się, jak mogę to zrobić “u siebie”. Dziś przyszedł ten moment, że postanowiłam to w końcu zrobić.
Google search
Na stronie npf.io znalazłam wpis o tym, jak można utworzyć serię artykułów w Hugo. Postanowiłam pójść tym tropem.
Zdefiniowanie metadanych to za mało
Hugo pozwala użyć dowolnych metadanych we wpisie, zresztą artykuł sugeruje, że to wystarczy. Niestety, samo dodanie
|
|
powodowało błędy renderowania:
|
|
Postanowiłam poczytać o tym, czym są taksonomie.
Taksonomie
Taksonomie są podobne to tagów, z tym, że można mieć różne rodzaje tagów. Taksonomia “tagi” pozwala na użycie tagów “go” albo “programowanie”. Taksonomia “series” pozwala na użycie tagów “Projekt Gabinet” czy “Hugo 101”.
Taksonomie pozwalają na powiązanie ze sobą wielu fragmentów treści, to prawie jak mała baza danych - jeden fragment treści bloga, na przykład wpis, może być częścią różnych taksonomii: może być wpisem, może być stroną, może być odcinkiem serii.
Chcę dodać taksonomię “series”, więc w metadanych wpisu dodaję
|
|
a po napotkaniu powyższego błędu odnajduję w dokumentacji Hugo o taksonomiach wzmiankę o tym, że muszę jeszcze zmodyfikować config.toml
i dodać definicję taksonomii series
:
|
|
Jest to koniecznie przy definiowaniu taksonomii innych niż standardowe (“posts” i “categories”).
Wyświetlanie listy serii
Jak wyświetlić listę wszystkich serii?
Tu trochę strzelałam na oślep. Przeglądając templejty do taksonomii, zauważyłam stronę layout/taxonomy/terms.html
, która uwzględnia jedynie taksonomie standardowe (“categories” i “posts”), a nie wyświetlała niczego dla taksonomii “series”.
Spróbowałam więc wyświetlić serie tak samo, jak wyświetlane są kategorie - czyli rozszerzyłam warunek renderowania “kart” tak, aby uwzględniał też nową taksonmię:
|
|
Wyświetlenie listy artykułów będących częścią serii
Jak teraz dodać listę wpisów z bieżącej serii na końcu wpisu?
Zmodyfikowałam istniejący templejt wpisu, czyli plik
themes/LoveIt/layouts/posts/sinde.html
i przed sekcją dodającą footer wstawiłam poniższy snippet.
Zakłada on, że artykuł jest częścią nie więcej niż jednej serii - aby określić, do jakiej serii należy bieżący artykuł, pobiera on zerowy element listy .Params.series
. Założenie jest raczej rozsądne, ale muszę o nim pamiętać, definiując zmienną series
w metadanych wpisu.
|
|
Uwaga
Nazwa serii staje się kluczem w mapie i podlega przekształceniu: wg autora artykułu wystarczy dodać filtr urlize
, ale w moim przypadku zastępuje on znaki narodowe weeskejpowanymi html-owo znakami
Natomiast bez urlize
- tak jak to ostatecznie zrobiłam - nie ma eskejpowania, jednak klucz powstaje przez zamianę liter na małe (tu mogłabym użyć filtra lower
) oraz zastąpienie spacji myślnikiem (tu, niestety, nie znalazłam odpowiedniego filtra).
Z tego powodu muszę nazwy serii konstruować po prostu ostrożnie:
- będą zawierały małe litery (chyna że zrobię
$nameold := $name |lower
) - będą pojedynczym słowem (bez spacji)
- mogą zawierać polskie znaki
Przynajmniej do czasu, kiedy znajdę lepsze rozwiązanie problemu wypisywania listy wpisów w serii.