Actualitza el teu lloc tabi a Zola 0.23
Zola 0.23 trenca moltes coses; tabi 5.0.0 tambĂ©. Zola 0.23.0 ha canviat moltes coses, sobretot per l’actualitzaciĂł a Tera 2. Com que això obliga els usuaris a fer canvis, he aprofitat per retirar opcions que nomĂ©s existien per compatibilitat amb versions anteriors. Aquest document pretĂ©n facilitar la transiciĂł. tabi requereix Zola 0.23.6 o superior. Comprova la versiĂł que fas servir en local, a CI i al desplegament: Si necessites quedar-te en una versiĂł de Zola anterior a la 0.23.0, fixa tabi a Si ja tens un clon: Com a submòdul: El repositori pare desa el commit del submòdul, no el nom de l’etiqueta. Per a un clon nou: Si has configurat Les substitucions mĂ©s comunes sĂłn Cerca les crides a shortcodes en lĂnia: Cerca les crides a shortcodes de bloc: Cada resultat indica un fitxer, un nĂşmero de lĂnia i la crida. N’apareixeran de dos tipus: Si vas envoltar exemples amb Llista els teus shortcodes i macros propis: Tot el que hi aparegui Ă©s teu, no de tabi, i cal migrar-ho a Revisa la configuraciĂł per trobar opcions retirades: Mou les opcions de realçat de Per fer servir temes diferents: tabi requereix La taula Les crides en lĂnia perden els parèntesis i les comes: Les crides de bloc fan servir etiquetes de tancament amb nom: Envolta entre claus les expressions, els booleans, els nombres, els arrays i els mapes. Per defecte, els parĂ metres dels components sĂłn explĂcits. Prefixa amb Mou les plantilles del teu lloc de Fes servir parĂ metres normals per a les entrades del component i parĂ metres implĂcits per a valors ambientals com El markdown es processa com a plantilla abans de renderitzar els blocs de codi. Envolta els exemples literals entre Els identificadors d’encapçalament personalitzats no necessiten blocs raw: Fes servir Les plantilles pròpies que sobreescriuen les del tema, a L’accĂ©s a valors indefinits Ă©s mĂ©s estricte. Fes servir encadenament opcional, com ara Consulta la guia de migraciĂł de Tera per veure tots els canvis del llenguatge.zola --versionv4.2.0, l’última versiĂł compatible.git -C themes/tabi fetch --tags
git -C themes/tabi checkout --detach v4.2.0
git -C themes/tabi describe --tags --exact-matchgit submodule update --init themes/tabi
git -C themes/tabi fetch --tags
git -C themes/tabi checkout --detach v4.2.0
git add themes/tabi
git diff --cached --submodule=log -- themes/tabi
git commit -m "Pin tabi v4.2.0 for pre-0.23 Zola"git clone --branch v4.2.0 --depth 1 https://github.com/welpo/tabi.git themes/tabi ĂŤndex
Elimina les opcions retirades
footnote_backlinks: fes servir [markdown].bottom_footnotes = true.add_src_to_code_block: fes servir blocs de codi amb nom i code_block_name_links.[extra].index_format: mou-la a [search] i a la taula de cerca de cada llengua activada.translate_copyright i translated_copyright: fes servir copyright_translations. Actualitza els formats de data
long_date_format, short_date_format, archive_date_format o date_formats, reescriu cada valor amb patrons UTS-35. Les directives % de strftime fallen quan tabi aplica la configuració regional de l’idioma.# Abans
long_date_format = "%d %B %Y"
# Després
long_date_format = "dd MMMM y"%-d → d, %d → dd, %b → MMM, %B → MMMM i %Y → y. Escriu el text literal entre apòstrofs: d 'de' MMMM 'de' y. Localitza què cal canviar
grep -rEn --include='*.md' '[{][{][[:space:]]*[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]' contentgrep -rEn --include='*.md' '[{]%[[:space:]]*[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]' contentadmonition, toc o dual_theme_image. Converteix-los a la sintaxi de components, tal com s’explica més avall.get_url, resize_image o get_taxonomy_url. Aquestes continuen funcionant a la 0.23. No les toquis.{% raw %}, aquests resultats són text literal. Tampoc no els toquis.ls templates/shortcodes templates/macrostemplates/components/.grep -En 'footnote_backlinks|add_src_to_code_block|translate_copyright|translated_copyright|index_format|highlight_code|highlight_theme' config.toml Actualitza el realçat de sintaxi
[markdown] a [markdown.highlighting]:[markdown]
smart_punctuation = true
[markdown.highlighting]
theme = "catppuccin-frappe"
style = "class"
error_on_missing_language = true[markdown.highlighting]
light_theme = "catppuccin-latte"
dark_theme = "catppuccin-frappe"
style = "class"
error_on_missing_language = truestyle = "class". Zola genera giallo.css, o bé giallo-light.css i giallo-dark.css. Configura la cerca multilingüe
[search] de l’arrel configura la llengua per defecte. Cada llengua addicional amb build_search_index = true necessita la seva pròpia taula:build_search_index = true
[search]
include_title = true
include_description = true
include_path = true
include_content = true
index_format = "elasticlunr_json"
[languages.ca]
title = "El meu lloc"
build_search_index = true
[languages.ca.search]
include_title = true
include_description = true
include_path = true
include_content = true
index_format = "elasticlunr_json" Converteix els shortcodes en components
-{{ admonition(type="tip", text="Stay hydrated") }}
+{{< admonition type="tip" text="Stay hydrated" />}}-{% admonition(type="tip") %}
+{% <admonition type="tip"> %}
Stay hydrated.
-{% end %}
+{% </admonition> %}@ els parà metres de context ambiental a la definició del component perquè Tera els resolgui des del cridador:{% component post_language(@lang: string) %}
{{ lang }}
{% endcomponent post_language %}{{< dual_theme_image light_src="light.webp" dark_src="dark.webp" full_width={true} />}}
{{< multilingual_quote original="Hola" translated="Hello" />}}
{{< iine />}} Migra els teus shortcodes propis
templates/shortcodes/ a templates/components/ i defineix un component. Aquest exemple està adaptat d’un lloc que fa servir tabi:{% component youtube(id: string, class = "", playlist = "", autoplay = false) %}
<div{% if class %} class="{{ class }}"{% endif %}>
<iframe src="https://www.youtube-nocookie.com/embed/{{ id }}{% if playlist %}?list={{ playlist }}{% if autoplay %}&autoplay=1{% endif %}{% elif autoplay %}?autoplay=1{% endif %}" allowfullscreen></iframe>
</div>
{% endcomponent youtube %}{{< youtube id="dQw4w9WgXcQ" class="video" autoplay={true} />}}lang, config o page. Un valor implĂcit encara es pot sobreescriure explĂcitament al lloc de la crida. Protegeix els exemples literals
{% raw %} i {% endraw %} al fitxer font.## Comprovacions de desplegament {#comprovacions-de-desplegament}skip_content_templating només quan el fitxer sencer hagi de saltar-se el processament de plantilles. Revisa les teves plantilles personalitzades
templates/, no s’actualitzen amb el tema.Abans Ara macros i {% import %}components items | concat(with=item)[...items, item]items | slice(start=1)items[1:]value | as_strvalue | strtrim_start_matches / trim_end_matchestrim_start / trim_enditem.0item[0]is starting_with("http")is starting_with(pat="http")is iterable per a arraysis arrayget_taxonomy_url(..., name=term)get_taxonomy_url(..., term=term){% include "x" ignore missing %}inclou un fitxer per defecte que existeixi page?.extra?.setting, i comprova els valors nuls explĂcits abans d’aplicar-hi filtres. default(value=...) gestiona els valors indefinits, no els nuls.get_page i get_section reben una ruta canònica i lang. Els arguments dels components fan servir literals de cadena o expressions entre claus; page Ă©s la forma abreujada de page={page}. Diferències esperades a la sortida
#fn-* i #fr-*.z-*, o bé z-l-*/z-d-*.hreflang; les destinacions no haurien de canviar.