Guia completa sobre sèries
Taula de contingut
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
Crea un directori per a la teva sèrie
Crea
_index.md
al directori de la sèrieConfigura el front matter de
_index.md
:= "Aprenent Rust" = "series.html" = "slug" = true [] = true
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:
- Utilitzar la plantilla
series.html
- Establir
series = true
a la configuració[extra]
de la secció - 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:
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.
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_by | avantatges | desavantatges |
---|---|---|
slug | L’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. |
weight | L’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. |
date | L’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 ). |
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
:
[]
= true # Per defecte és false si no es configura
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:
[]
= "Aquest article és part de la sèrie $SERIES_HTML_LINK."
[]
= "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üentprev_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
:
[]
= "Benvingut a la part 1! Següent: $NEXT_HTML_LINK"
= "Anterior: $PREV_HTML_LINK | Següent: $NEXT_HTML_LINK"
= "El capítol final! Anteriorment: $PREV_HTML_LINK"
= "Part $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER"
Totes les plantilles són opcionals. La selecció de plantilles segueix un sistema de prioritat:
- Si existeix una plantilla específica per a la posició (
next_only
,middle
, oprev_only
), s’utilitzarà aquesta - Si no, s’utilitza la plantilla
default
- 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:
Variables
Les plantilles de sèries utilitzen un sistema flexible de variables que et permet:
- Fer referència a informació de la sèrie (títol, enllaços)
- Afegir navegació entre articles
- Mostrar indicadors de progrés
- 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: Informació general sobre la sèrie
- Variables de navegació: Enllaços a articles anterior/següent
- Variables personalitzades: Els teus propis marcadors per a informació addicional
Variables bàsiques de sèrie
Variable | Disponibilitat | Retorna | Descripció | Exemple d’ús | Exemple de sortida |
---|---|---|---|---|---|
$SERIES_TITLE | Sempre | Text | Títol de la sèrie en text pla | Part de $SERIES_TITLE | Part d’Aprenent Rust |
$SERIES_PERMALINK | Sempre | Text | URL a l’índex de la sèrie | [Veure totes les publicacions]($SERIES_PERMALINK) | Veure totes les publicacions |
$SERIES_HTML_LINK | Sempre | HTML | Enllaç llest per usar a la sèrie | Benvingut a $SERIES_HTML_LINK! | Benvingut a Aprenent Rust! |
$SERIES_PAGES_NUMBER | Sempre | Nombre | Total d’articles a la sèrie | Una sèrie de $SERIES_PAGES_NUMBER parts | Una sèrie de 5 parts |
$SERIES_PAGE_INDEX | Sempre | Nombre | Posició de l’article actual | Part $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER | Part 3 de 5 |
$SERIES_PAGES_OLIST | Sempre | HTML | Llista ordenada de tots els articles | Articles a la sèrie: $SERIES_PAGES_OLIST | Articles a la sèrie:
|
$SERIES_PAGES_ULIST | Sempre | HTML | Llista desordenada de tots els articles | Articles a la sèrie: $SERIES_PAGES_ULIST | Articles a la sèrie:
|
Variables de navegació
Variable | Disponibilitat | Retorna | Descripció | Exemple d’ús | Exemple de sortida |
---|---|---|---|---|---|
$PREV_TITLE | Existeix anterior | Text | Títol de l’article anterior | Anteriorment: $PREV_TITLE | Anteriorment: Configurant el teu entorn |
$PREV_PERMALINK | Existeix anterior | Text | URL a l’article anterior | [← Enrere]($PREV_PERMALINK) | ← Enrere |
$PREV_HTML_LINK | Existeix anterior | HTML | Enllaç llest per usar a l’anterior | Llegeix primer $PREV_HTML_LINK | Llegeix primer Configurant el teu entorn |
$PREV_DESCRIPTION | Existeix anterior | Text | Descripció de l’article anterior | Resum: $PREV_DESCRIPTION | Resum: Configurant Rust |
$NEXT_TITLE | Existeix següent | Text | Títol del següent article | Següent: $NEXT_TITLE | Següent: Patrons avançats |
$NEXT_PERMALINK | Existeix següent | Text | URL al següent article | [Continuar →]($NEXT_PERMALINK) | Continuar → |
$NEXT_HTML_LINK | Existeix següent | HTML | Enllaç llest per usar al següent | Continua amb $NEXT_HTML_LINK | Continua amb Patrons avançats |
$NEXT_DESCRIPTION | Existeix següent | Text | Descripció del següent article | Properament: $NEXT_DESCRIPTION | Properament: Aprèn sobre les característiques avançades de pattern matching en Rust |
Referència al primer article
Variable | Disponibilitat | Retorna | Descripció | Exemple d’ús | Exemple de sortida |
---|---|---|---|---|---|
$FIRST_TITLE | Sempre | Text | Títol del primer article | Comença amb $FIRST_TITLE | Comença amb Introducció a Rust |
$FIRST_HTML_LINK | Sempre | HTML | Enllaç llest per usar al primer article | Comença a $FIRST_HTML_LINK | Comença a Introducció a Rust |
Exemple de plantilla
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ó
[]
= """
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
"""
= """
📚 Part $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER a $SERIES_HTML_LINK
Anterior: $PREV_HTML_LINK
Següent: $NEXT_HTML_LINK
"""
= """
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
= "Aquest article és part de la sèrie $SERIES_HTML_LINK."
# Conclusió
[]
= """
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).
"""
= """
---
📝 Navegació de la sèrie
- Anterior: $PREV_HTML_LINK
- Següent: $NEXT_HTML_LINK
- [Resum de la sèrie]($SERIES_PERMALINK)
"""
= """
🎉 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.
= """
---
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:
- Primer, defineix els teus marcadors a la configuració de la teva sèrie (
_index.md
):
[]
= true
= ["$POSITION", "$TOPIC", "$DIFFICULTY"]
- Després, a cada article de la sèrie, proporciona els valors per a aquests marcadors a
series_template_variables
:
[]
= "primer"
= "Variables i tipus"
= "Principiant"
Ús de variables personalitzades
Pots usar les teves variables personalitzades a qualsevol plantilla, juntament amb les variables integrades:
[]
= """
Aquest és l'article $POSITION a $SERIES_HTML_LINK.
Tema d'avui: $TOPIC
Nivell de dificultat: $DIFFICULTY
"""
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.
[]
= true
= ["$LEARNING_TIME", "$KEY_CONCEPTS"]
= """
📚 Part $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER
⏱️ Temps estimat: $LEARNING_TIME
🔑 Conceptes clau: $KEY_CONCEPTS
"""
# En un article de la sèrie.
[]
= "30 minuts"
= "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
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.