Guia completa sobre sèries

Una sèrie organitza publicacions relacionades en ordre seqüencial, similar als capítols d’un llibre. A diferència de les etiquetes, que simplement agrupen contingut relacionat, les sèries suggereixen un ordre específic de lectura de principi a fi.

Les publicacions dins d’una sèrie no necessiten publicar-se de forma consecutiva; la funció de sèries reuneix publicacions temàticament vinculades en una seqüència coherent.

El següent diagrama il·lustra com les publicacions de la sèrie (3, 5 i 8) existeixen dins del flux principal del blog mentre mantenen la seva pròpia seqüència ordenada dins de Sèrie 1.

    flowchart
    subgraph main[BLOG]
        P1[Post 1]
        P2[P2]
        P3[P3]
        P4[P4]
        P5[P5]
        P6[P6]
        P7[P7]
        P8[P8]
        P9[P9]
    end
    subgraph series1[SÈRIE 1]
        PS1["Post Sèrie 1 (=P3)"]
        PS2["Post Sèrie 2 (=P5)"]
        PS3["Post Sèrie 3 (=P8)"]
    end
    P3 o-.-o PS1
    P5 o-.-o PS2
    P8 o-.-o PS3

Inici ràpid

  1. Crea un directori per a la teva sèrie

  2. Crea _index.md al directori de la sèrie

  3. Configura el front matter de _index.md:

    title = "Aprenent Rust"
    template = "series.html"
    sort_by = "slug"
    transparent = true
    
    [extra]
    series = true
    
  4. Crea els teus articles de la sèrie en aquest directori

Vols saber-ne més? Continua llegint!

Com funcionen les sèries?

Una sèrie és simplement una secció que tabi gestiona de manera especial. Per a més detalls sobre seccions, consulta la documentació de Zola.

Prenent l’exemple del diagrama anterior, l’estructura de directoris seria així:

content/
    _index.md
    blog/
        _index.md
        post1/
            index.md
        post2/
            index.md
        post4/
            index.md
        post6/
            index.md
        post7/
            index.md
        post9/
            index.md
        serie1/
            _index.md
            post3/
                index.md
            post5/
                index.md
            post8/
                index.md

Per crear una sèrie, necessites:

  1. Utilitzar la plantilla series.html
  2. Establir series = true a la configuració [extra] de la secció
  3. Activar transparent = true per integrar les publicacions de la sèrie amb la secció del blog principal

La pàgina principal de la sèrie mostra un resum seguit d’una llista de totes les publicacions a la sèrie:

una sèrieuna sèrie

Saltar a les publicacions

Si el contingut d’una sèrie (el Markdown després del frontmatter a _index.md) supera els 2000 caràcters, apareix un enllaç “Salta a les publicacions” al costat del títol de la sèrie.

enllaç per saltar a les publicacions de la sèrieenllaç per saltar a les publicacions de la sèrie

Per forçar l’activació o desactivació d’aquesta funció, configura show_jump_to_posts a la secció [extra] de la teva secció de sèries o a config.toml. Aquesta configuració segueix la jerarquia.

Pàgines de sèries i ordre

Totes les pàgines a la secció de sèries seran pàgines de sèrie. Les pàgines s’ordenaran segons el sort_by de la secció.

Tot i que les sèries mantenen el seu propi ordre intern, romanen independents del flux cronològic de la secció principal (per exemple, blog/) gràcies a la configuració transparent.

Opcions d’ordre

Tria entre aquests mètodes d’ordre, cadascun amb els seus avantatges:

sort_byavantatgesdesavantatges
slugL’ordre de les pàgines és explícit a la ruta (per exemple, example.com/blog/series1/01-series-post-un).Cada pàgina de la sèrie ha de tenir el prefix corresponent.
weightL’ordre de les pàgines és fàcil de configurar de forma transparent.
La primera publicació té pes 1, la segona pes 2 i així successivament.
Cada pàgina de la sèrie ha de tenir el seu pes configurat.
dateL’ordre de les pàgines es pot configurar una sola vegada a la configuració de la secció. No cal fer res a cada pàgina.L’ordre de les pàgines s’ha d’invertir perquè la primera pàgina sol ser la més antiga. Això només es pot aconseguir paginant la secció (paginate_by = 9999) i invertint el seu ordre (paginate_reversed = true).
Versió de Zola per ordenar per data

Per invertir correctament les dates, es requereix Zola v0.19.3+ (no publicada) perquè la informació de paginació estigui disponible a través de la funció get_section. En cas contrari, qualsevol cosa que depengui de l’ordre de les pàgines de la sèrie no serà correcta (per exemple, pàgina anterior/següent, llistes ordenades i no ordenades…) Vegeu Zola PR #2653.

Indexació de pàgines

Les pàgines en una sèrie s’indexen començant des d’1, seguint el seu ordre sort_by. Per invertir la indexació (fent que la primera pàgina tingui l’índex més alt), afegeix aquesta configuració a _index.md o config.toml:

[extra]
post_listing_index_reversed = true  # Per defecte és false si no es configura
una sèrie amb índexs invertitsuna sèrie amb índexs invertits

Aquesta configuració segueix la jerarquia.

Plantilles d’introducció i conclusió

Els articles d’una sèrie poden tenir seccions automàtiques d’introducció i conclusió. Aquestes es configuren al _index.md de la teva sèrie. Un exemple bàsic:

[extra.series_intro_templates]
default = "Aquest article és part de la sèrie $SERIES_HTML_LINK."

[extra.series_outro_templates]
default = "Gràcies per llegir la part $SERIES_PAGE_INDEX de $SERIES_HTML_LINK!"

Les seccions d’introducció i conclusió tenen les seves pròpies classes CSS (series-page-intro i series-page-outro), que et permeten personalitzar la seva aparença mitjançant CSS personalitzat.

Tipus de plantilles

El sistema de sèries utilitza diferents plantilles segons la posició de l’article a la sèrie:

  • next_only - Utilitzat per al primer article (té article següent però no anterior)
  • middle - Utilitzat per a articles amb articles anterior i següent
  • prev_only - Utilitzat per a l’últim article (té article anterior però no següent)
  • default - Plantilla per defecte utilitzada quan no existeix una plantilla específica per a la posició

El sistema determina automàticament quina plantilla utilitzar segons la posició de l’article. Les plantilles es defineixen a la configuració de la sèrie (_index.md), com extra.series_intro_templates i extra.series_outro_templates:

[extra.series_intro_templates]
next_only = "Benvingut a la part 1! Següent: $NEXT_HTML_LINK"
middle = "Anterior: $PREV_HTML_LINK | Següent: $NEXT_HTML_LINK"
prev_only = "El capítol final! Anteriorment: $PREV_HTML_LINK"
default = "Part $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER"

Totes les plantilles són opcionals. La selecció de plantilles segueix un sistema de prioritat:

  1. Si existeix una plantilla específica per a la posició (next_only, middle, o prev_only), s’utilitzarà aquesta
  2. Si no, s’utilitza la plantilla default
  3. Si no es defineix cap plantilla, no es mostrarà informació de la sèrie

Mira l’exemple de plantilla per veure un exemple més elaborat.

Ubicació al contingut

Per defecte:

  • Les introduccions de sèrie apareixen a l’inici del teu article
  • La conclusió apareix al final (abans de les notes al peu, si n’hi ha)

Pots controlar exactament on apareixen utilitzant <!-- series_intro --> i <!-- series_outro --> al teu Markdown:

Aquest paràgraf apareix abans de la introducció de la sèrie.

<!-- series_intro -->

Contingut principal de l'article.

<!-- series_outro -->

## Recursos d'aprenentatge

Contingut addicional...

[^1]: Les notes al peu sempre apareixeran al final.

Variables

Les plantilles de sèries utilitzen un sistema flexible de variables que et permet:

  1. Fer referència a informació de la sèrie (títol, enllaços)
  2. Afegir navegació entre articles
  3. Mostrar indicadors de progrés
  4. Incloure informació personalitzada utilitzant les teves pròpies variables

Les variables són marcadors que comencen amb $ i es reemplacen amb contingut real quan es construeix el teu lloc. Per exemple, $SERIES_HTML_LINK es converteix en un enllaç clicable a la pàgina índex de la teva sèrie.

Hi ha tres tipus de variables:

Variables bàsiques de sèrie

VariableDisponibilitatRetornaDescripcióExemple d’úsExemple de sortida
$SERIES_TITLESempreTextTítol de la sèrie en text plaPart de $SERIES_TITLEPart d’Aprenent Rust
$SERIES_PERMALINKSempreTextURL a l’índex de la sèrie[Veure totes les publicacions]($SERIES_PERMALINK)Veure totes les publicacions
$SERIES_HTML_LINKSempreHTMLEnllaç llest per usar a la sèrieBenvingut a $SERIES_HTML_LINK!Benvingut a Aprenent Rust!
$SERIES_PAGES_NUMBERSempreNombreTotal d’articles a la sèrieUna sèrie de $SERIES_PAGES_NUMBER partsUna sèrie de 5 parts
$SERIES_PAGE_INDEXSempreNombrePosició de l’article actualPart $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBERPart 3 de 5
$SERIES_PAGES_OLISTSempreHTMLLlista ordenada de tots els articlesArticles a la sèrie: $SERIES_PAGES_OLISTArticles a la sèrie:
  1. Article actual
  2. Altres articles
$SERIES_PAGES_ULISTSempreHTMLLlista desordenada de tots els articlesArticles a la sèrie: $SERIES_PAGES_ULISTArticles a la sèrie:

Variables de navegació

VariableDisponibilitatRetornaDescripcióExemple d’úsExemple de sortida
$PREV_TITLEExisteix anteriorTextTítol de l’article anteriorAnteriorment: $PREV_TITLEAnteriorment: Configurant el teu entorn
$PREV_PERMALINKExisteix anteriorTextURL a l’article anterior[← Enrere]($PREV_PERMALINK)← Enrere
$PREV_HTML_LINKExisteix anteriorHTMLEnllaç llest per usar a l’anteriorLlegeix primer $PREV_HTML_LINKLlegeix primer Configurant el teu entorn
$PREV_DESCRIPTIONExisteix anteriorTextDescripció de l’article anteriorResum: $PREV_DESCRIPTIONResum: Configurant Rust
$NEXT_TITLEExisteix següentTextTítol del següent articleSegüent: $NEXT_TITLESegüent: Patrons avançats
$NEXT_PERMALINKExisteix següentTextURL al següent article[Continuar →]($NEXT_PERMALINK)Continuar →
$NEXT_HTML_LINKExisteix següentHTMLEnllaç llest per usar al següentContinua amb $NEXT_HTML_LINKContinua amb Patrons avançats
$NEXT_DESCRIPTIONExisteix següentTextDescripció del següent articleProperament: $NEXT_DESCRIPTIONProperament: Aprèn sobre les característiques avançades de pattern matching en Rust

Referència al primer article

VariableDisponibilitatRetornaDescripcióExemple d’úsExemple de sortida
$FIRST_TITLESempreTextTítol del primer articleComença amb $FIRST_TITLEComença amb Introducció a Rust
$FIRST_HTML_LINKSempreHTMLEnllaç llest per usar al primer articleComença a $FIRST_HTML_LINKComença a Introducció a Rust

Exemple de plantilla

Variables HTML vs text

Utilitza variables HTML (que acaben en _HTML_LINK) quan vulguis enllaços preparats per usar. Utilitza variables de text (que acaben en _TITLE o _PERMALINK) quan vulguis més control sobre el format.

# Introducció
[extra.series_intro_templates]
next_only = """
Benvingut a $SERIES_HTML_LINK! Aquesta sèrie de $SERIES_PAGES_NUMBER parts t'ensenyarà Rust des de zero.

Següent: $NEXT_HTML_LINK - $NEXT_DESCRIPTION
"""

middle = """
📚 Part $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER a $SERIES_HTML_LINK

Anterior: $PREV_HTML_LINK
Següent: $NEXT_HTML_LINK
"""

prev_only = """
Benvingut a l'última part de $SERIES_HTML_LINK!
Ets nou? Comença amb $FIRST_HTML_LINK per construir una base sòlida.

Anterior: $PREV_HTML_LINK
"""

# Plantilla de respatller
default = "Aquest article és part de la sèrie $SERIES_HTML_LINK."

# Conclusió
[extra.series_outro_templates]
next_only = """
Gràcies per llegir! 🙌

Continua el teu viatge amb $NEXT_HTML_LINK, on $NEXT_DESCRIPTION
O revisa l'esquema complet de la sèrie [$SERIES_TITLE]($SERIES_PERMALINK).
"""

middle = """
---
📝 Navegació de la sèrie

- Anterior: $PREV_HTML_LINK
- Següent: $NEXT_HTML_LINK
- [Resum de la sèrie]($SERIES_PERMALINK)
"""

prev_only = """
🎉 Felicitats! Has completat $SERIES_HTML_LINK.

Vols repassar? Aquí vam començar: $FIRST_HTML_LINK
O revisa el que acabem de veure a $PREV_HTML_LINK.
"""

# Respatller.
default = """
---
Aquest article és la part $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER a $SERIES_HTML_LINK.
"""

Variables personalitzades

Les plantilles de sèries admeten variables personalitzades per incloure informació addicional a tota la teva sèrie. El procés té dos passos:

  1. Primer, defineix els teus marcadors a la configuració de la teva sèrie (_index.md):
[extra]
series = true
series_template_placeholders = ["$POSITION", "$TOPIC", "$DIFFICULTY"]
  1. Després, a cada article de la sèrie, proporciona els valors per a aquests marcadors a series_template_variables:
[extra.series_template_variables]
position = "primer"
topic = "Variables i tipus"
difficulty = "Principiant"

Ús de variables personalitzades

Pots usar les teves variables personalitzades a qualsevol plantilla, juntament amb les variables integrades:

[extra.series_intro_templates]
default = """
Aquest és l'article $POSITION a $SERIES_HTML_LINK.
Tema d'avui: $TOPIC
Nivell de dificultat: $DIFFICULTY
"""
WARNING

Encara que els marcadors es defineixen en majúscules ($POSITION), els noms de variables a series_template_variables han d’estar en minúscules (position).

Exemple amb variables personalitzades

# A la configuració de la sèrie.
[extra]
series = true
series_template_placeholders = ["$LEARNING_TIME", "$KEY_CONCEPTS"]

series_intro_templates.default = """
📚 Part $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER
⏱️ Temps estimat: $LEARNING_TIME
🔑 Conceptes clau: $KEY_CONCEPTS
"""
# En un article de la sèrie.
[extra.series_template_variables]
learning_time = "30 minuts"
key_concepts = "Funcions, gestió d'errors, coincidència de patrons"

Això generarà:

📚 Part 2 de 5
⏱️ Temps estimat: 30 minuts
🔑 Conceptes clau: Funcions, gestió d'errors, coincidència de patrons
Variables que falten

Si uses un marcador a les teves plantilles però no proporciones el seu valor a series_template_variables, la compilació fallarà amb un error que llista les variables que falten.