Implementácia sérii – Hugo

Cieľ

Chcem pridať ďalšie nové hľadisko – série, na klasifikáciu / zoskupovanie príspevkov do použitej témy v generátore statických stránok Hugo .

Riešenie

Zapnúť série

V hlavnom konfiguračnom súbore zapnem novú taxonómiu, v časti taxonomies doplním riadok s series.

[taxonomies]
  tag = "tags"
  # Categories are disabled by default.
  category = "categories"
  series = "series"

Vytvoriť šablónu pre zobrazenie

V adresári s témou vytvorím úplne nový súbor series_link.html, je to šablóna na zobrazenie odkazov na všetky príspevky v danej sérii.

themes/názov-témy/layouts/partials/series_link.html

{{ if .Params.series }}
<div>
    <h4>{{ i18n "partOfSeries" }}</h4>
    <ul class="list-group">
        {{ range $num,$post := (index .Site.Taxonomies.series (index .Params.series 0 | urlize)).Pages.ByDate }}
            {{ if eq $post.Permalink $.Page.Permalink }}
                <li class="list-group-item active">
                    {{ i18n "part"}} {{ add $num 1 }}: {{ i18n "thisArticle"}}
                </li>
            {{ else }}
                <li class="list-group-item">
                    <a href="{{$post.Permalink}}">
                        {{ i18n "part"}} {{ add $num 1 }}: {{ $post.Params.title}}
                    </a>
                </li>
            {{end}}
        {{end}}
    </ul>
</div>
{{end}}

Pridať série na stránku

V šablóne na zobrazenie príspevku single.html doplním na požadované miesto odkaz na vyššie vytvorenú šablónu na zobrazenie príspevkov v sérii.

Zoznam príspevkov v sérii umiestnim aj na začiatok, medzi hlavný nadpis a obsah samotného príspevku, a aj na koniec, po obsahu príspevku.

themes/názov-témy/layouts/posts/single.html

...
{{ partial "series_link.html" . }}
{{ .Content | ........}}
{{ partial "series_link.html" . }}
...

Viacjazyčnosť

Chcem zabezpečiť aj možnosť použitia sérii aj v iných jazykoch, tak šablóna na zobrazenie odkazov na príspevky v sérii používa na zobrazenie na pevno vloženého textu systém i18n a teda doplním aj minimálne slovenskú a anglickú verziu použitého textu.

themes/názov-témy/i18n/en.toml

# partials/series_link.html
#
[partOfSeries]
other = "This article is part of a series."

[part]
other = "Part"

[thisArticle]
other = "This Article"

themes/názov-témy/i18n/sk.toml

# partials/series_link.html
#
[partOfSeries]
#other = "This article is part of a series."
other = "Tento príspevok je časťou série:"

[part]
#other = "Part"
other = "Časť"

[thisArticle]
#other = "This Article"
other = "Tento príspevok"

Pridanie série do obsahu

Ak teda chcem aby vytváraný obsah bol zaradený do nejakej série, tak do frontmatter príspevku pridám ďalšiu položku series a do nej pridám zoznam obsahujúci aspoň jednu sériu kam chcem príspevok zaradiť.

series:
  - APT

Zdroj


zw

Hugo

358 slov

2022-12-31 10:22 +0000

2023-01-15 15:47 +0000