tilder, fr, Documentation, Référence, Configuration

Documentation

Nom

configuration - chaque clé de defaults.toml

tilder lit chaque réglage d'un site, et chaque mot qu'un lecteur voit en dehors des pages, dans des fichiers TOML. Son propre defaults.toml contient chaque clé avec une valeur par défaut neutre, en anglais ; le theme.toml du thème et le content/site.toml du site se fusionnent par-dessus, et ne disent que ce qui change. Cette page reprend chaque clé de defaults.toml, table par table, avec sa valeur par défaut telle que le fichier l'écrit.

La fusion des fichiers

Chaque fichier se fusionne par-dessus le précédent, le dernier l'emporte : defaults.toml, puis theme/theme.toml, puis content/site.toml. Sur un site en plusieurs langues, theme/theme.<lang>.toml vient après theme.toml, et content/site.<lang>.toml après site.toml, pour la passe de cette langue (le projet, langues).

  • Les tables se fusionnent clé par clé : un fichier qui règle [site] manual garde toutes les autres clés de [site].
  • Une valeur qui n'est pas une table, liste comprise, remplace la précédente en entier. Une liste de tables, [[nav]], aussi : un fichier qui la règle en répète chaque entrée.
  • Les réglages d'une collection partent des valeurs par défaut de son type, dans le module du type, avec [collections.<name>] par-dessus (types de contenu).

Les fichiers sont relus à chaque construction, et aucun n'est jamais servi. Une clé que tilder ne lit pas est ignorée, sauf les quelques tables retirées, qui arrêtent la construction avec un message disant où sont passées leurs clés (la ligne de commande).

Site

La table [site] : qui est le site, où il vit, sa langue.

Clé Défaut Rôle
site.name"my site"le logotype, ~/my site ; og:site_name ; le WebSite des données structurées ; le name du manifeste web
site.url"https://example.org"l'origine canonique, sans barre oblique finale : chaque adresse absolue qu'écrit la construction commence par elle
site.lang"en"la langue par défaut, servie à la racine : le lang de la page, des flux, du manifeste
site.locale"en_GB"og:locale, pour Open Graph
site.manual"My Site Manual"le centre du filet d'en-tête de page de manuel, sur la page et dans le miroir en texte
site.updated2026-01-01une date TOML, pas une chaîne : la date du filet de pied de page, le lastBuildDate des flux, le dernier recours de <lastmod> dans le plan du site
site.title_suffix" - my site"ajouté à chaque <title> qui ne contient pas déjà site.name
site.languages[]chaque langue servie, celle par défaut (lang) en premier ; vide : une seule langue, sans préfixe

site.url doit être l'adresse à laquelle le site est servi : les liens canoniques, og:url, les plans du site, les flux et le calendrier en sont tirés. site.title_suffix n'est ajouté que si le titre ne nomme pas déjà le site, majuscules ou non : une page intitulée About my site garde son titre tel quel.

[site]
name = "my site"
url = "https://example.org"
lang = "en"
locale = "en_GB"
manual = "My Site Manual"
updated = 2026-05-16
title_suffix = " - my site"
languages = ["en", "fr"]

Pied de page

La table [footer] : le filet de pied de page de manuel, en bas de chaque page, avec site.updated en son milieu.

Clé Défaut Rôle
footer.left"SITE"la gauche du filet ; dans le gabarit du site de départ, un lien
footer.left_link""la cible de footer.left, depuis la page d'accueil de la langue : "" est la page d'accueil elle-même
footer.right"SITE(1)"la droite du filet

Le miroir en texte écrit lui-même le filet à partir de ces clés. Sur la page, le gabarit les place où il veut : celui du site de départ écrit <a href="{{ home }}{{ footer.left_link }}">{{ footer.left }}</a> (gabarits et variables).

[footer]
left = "MYSITE"
left_link = "about"
right = "MYSITE(1)"

Libellés

La table [labels] : les mots de l'interface, dont beaucoup ne s'entendent qu'à travers un lecteur d'écran. Traduisez-les dans site.<lang>.toml.

Clé Défaut Rôle
labels.skip"skip to content"le lien d'évitement, le premier de la page (une variable du gabarit)
labels.nav"Main navigation"le nom du repère de navigation (une variable du gabarit)
labels.info"INFO"le libellé d'un encadré d'information, sur la page et dans la boîte du miroir en texte
labels.warning"WARNING"le libellé d'un encadré d'avertissement
labels.error"ERROR"le libellé d'un encadré d'erreur
labels.image"image"la ligne d'une image dans le miroir en texte : [ image ] texte alternatif
labels.task_done"done"un élément fait d'une liste de tâches, lu par les lecteurs d'écran
labels.task_todo"to do"un élément à faire d'une liste de tâches, lu par les lecteurs d'écran
labels.to_top"↑ back to top"le lien qui remonte en haut de la page (une variable du gabarit)
labels.copy"copy"le bouton de copie des blocs de code, transmis au code.js du thème
labels.copied"copied"le même bouton, une fois la copie faite
labels.external"external site"dit par les lecteurs d'écran après un lien externe marqué de la flèche, à la place de la flèche
labels.new_tab"opens in a new tab"dit par les lecteurs d'écran sur un lien qui ouvre un nouvel onglet
labels.table"table"le nom de la zone défilante d'un tableau
labels.toc"contents"le titre du bloc [TOC] ; en capitales dans le miroir en texte
labels.website"website"le site personnel d'un membre, parmi ses liens de profil
labels.languages"Languages"le nom du sélecteur de langue, {{ languages }}
labels.collection_nav"In this section"le nom de la barre latérale {{ collection_nav }} ; une collection peut régler son propre nav_label
labels.prev"previous"le libellé de {{ prev }}, et de la ligne d'un type séquentiel dans le miroir en texte
labels.next"next"le libellé de {{ next }}, et de cette même ligne

Les trois libellés d'encadré choisissent aussi la couleur de la boîte dans le miroir en couleur : la boîte dont le filet du haut porte labels.info suit text.accent, labels.warning est jaune, labels.error rouge (le miroir en texte). Les variables du gabarit ne servent que là où le layout.html du thème les écrit, comme le fait celui du site de départ.

# content/site.fr.toml
[labels]
skip = "aller au contenu"
toc = "sommaire"
prev = "précédent"
next = "suivant"

Liens

La table [links] : les liens externes s'ouvrent-ils dans un nouvel onglet ?

Clé Défaut Rôle
links.new_tabfalsetrue : chaque lien externe, http:// ou https://, s'ouvre dans un nouvel onglet
links.same_tab[]avec new_tab activé, les hôtes dont les liens restent dans le même onglet, sous-domaines compris

Un lien qui ouvre un nouvel onglet reçoit target="_blank" et rel="noopener", et l'annonce aux lecteurs d'écran avec labels.new_tab. La règle vaut pour les liens des pages, la navigation et les liens de profil d'un membre (écrire des pages).

[links]
new_tab = true
same_tab = ["example.com"]    # et ses sous-domaines

Langues

La table [languages] est vide par défaut : elle associe au code d'une langue le nom qu'affiche le sélecteur de langue. Une langue sans nom affiche son code.

[languages]
en = "English"
fr = "Français"

Les noms ne sont lus que dans la configuration de la langue par défaut : ils s'écrivent une fois, dans site.toml, chacun dans sa propre langue (langues).

SEO

La table [seo] : les données structurées, la valeur par défaut pour les robots, et les limites des vérifications de la construction (SEO).

Clé Défaut Rôle
seo.organization"My Site"l'éditeur : le nœud Organization des données structurées de chaque page
seo.robots"index, follow, max-image-preview:large"le <meta name="robots"> d'une page qui ne règle pas robots:
seo.title_max60un <title> plus long, suffixe compris, donne un avertissement
seo.description_min50une description plus courte donne un avertissement
seo.description_max160une description plus longue donne un avertissement
[seo]
organization = "Example Group"
title_max = 65

Partage

La table [share] : les icônes, l'aperçu de lien et le manifeste web. Les icônes sont dessinées à chaque construction à partir de assets/logo.svg, et share.png à partir du share.svg du thème, rempli avec les valeurs d'ici (flux et images).

Clé Défaut Rôle
share.logo_svg"logo.svg"la source de chaque icône, un fichier de assets/
share.image"share.png"le fichier de l'aperçu par défaut, 1200x630, dessiné à partir du share.svg du thème : l'og:image de chaque page qui ne règle pas image:, quand le thème en a un
share.logo"icon-512.png"le logo des données structurées, et l'aperçu d'un thème sans share.svg ; le nom d'une icône que dessine la construction
share.image_alt"my site"l'og:image:alt d'une page qui ne règle pas image_alt:
share.card["a man-page website"]les lignes de l'aperçu sous le nom, une ou deux : {{ card_1 }} et {{ card_2 }} dans share.svg
share.theme_color"#0F6E68"la couleur de l'interface du navigateur : le theme_color du manifeste, le <meta name="theme-color"> du site de départ, et l'aperçu
share.background_color"#FDF6E3"le background_color du manifeste, et le fond de l'aperçu
share.text_color"#073642"le texte de l'aperçu
share.muted_color"#506C75"le texte secondaire de l'aperçu
share.rule_color"#DED7C3"les filets de l'aperçu
share.short_name"site"le short_name du manifeste, le nom sous une icône sur l'écran d'accueil d'un téléphone

Les cinq couleurs servent au share.svg du thème, qui les lit sous la forme {{ share.text_color }} et ainsi de suite ; un thème les règle d'habitude dans son theme.toml, en accord avec sa palette. Seules theme_color et background_color sont aussi écrites par la construction elle-même, dans le manifeste.

[share]
image_alt = "~/my site"
card = ["meetups and talks", "in Exampleville"]
short_name = "mysite"

Collections

[collections.<name>] déclare un dossier de content/ dont les fichiers sont les éléments d'un même type (types de contenu). Ses clés sont les réglages du type, chacun décrit sur la page du type, plus celles-ci :

Clé Défaut Rôle
type"post"le type : page, post, event, member, ou un type ajouté par le thème
dirle nom de la collectionle dossier, sous content/

Depuis tilder 1.2, recursive = true fait des sous-dossiers de dir des sections de la collection, et de leurs fichiers ses éléments, dans l'arbre de la barre latérale (navigation). La valeur est false sauf si la collection ou les DEFAULTS de son type la règlent ; un type daté, comme post ou event, ne peut pas être récursif, et la construction s'arrête s'il l'est.

defaults.toml déclare les trois collections que la plupart des sites ont. Chacune reste inactive tant que son dossier n'existe pas : ni page, ni flux, ni calendrier.

Clé Défaut
collections.blog.type"post"
collections.blog.dir"blog"
collections.blog.feed"blog/feed.xml"
collections.events.type"event"
collections.events.dir"events"
collections.events.nav"events"
collections.events.feed"events.xml"
collections.events.calendar"calendar.ics"
collections.members.type"member"
collections.members.dir"members"

Un site ne règle que ce qui en diffère, ou déclare les siennes :

[collections.blog]
man = "MYSITE-BLOG(7)"
feed_title = "my site blog"

[collections.talks]
type = "event"
feed = "talks.xml"
calendar = "talks.ics"

Les réglages de chaque type intégré sont sur sa page : post, event, member, page.

Dates

La table [dates] : comment une date s'écrit en toutes lettres, sur la carte d'un article ou d'un événement et comme accroche d'un article ou d'un événement.

Clé Défaut Rôle
dates.weekdays["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]les jours, lundi en premier
dates.months["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]les mois, janvier en premier
dates.first"1"comment s'écrit le premier jour du mois
dates.format"{weekday} {day} {month} {year}"le modèle

dates.format prend quatre noms entre accolades : {weekday}, {day} (le numéro du jour, sans zéro devant, ou dates.first le premier du mois), {month} et {year}. Avec les valeurs par défaut, 2026-11-21 s'écrit Saturday 21 November 2026. En français, « samedi 1er novembre » :

# content/site.fr.toml
[dates]
weekdays = ["lundi", "mardi", "mercredi", "jeudi", "vendredi",
            "samedi", "dimanche"]
months = ["janvier", "février", "mars", "avril", "mai", "juin",
          "juillet", "août", "septembre", "octobre", "novembre",
          "décembre"]
first = "1er"
format = "{weekday} {day} {month} {year}"

Calendrier

La table [calendar] : ce que partagent tous les fichiers iCalendar du site, pour les collections qui règlent calendar (event).

Clé Défaut Rôle
calendar.name"events"le nom du calendrier dans les applications, et la fin du résumé de chaque événement
calendar.description"Events."la description du calendrier
calendar.prodid"-//site//events//EN"l'identifiant du produit, PRODID
calendar.timezone"UTC"le fuseau horaire du calendrier
calendar.uid_domain"example.org"le domaine de l'identifiant de chaque événement, <slug>@<uid_domain> : mettez le vôtre
[calendar]
name = "my site events"
prodid = "-//example.org//events//EN"
uid_domain = "example.org"

Texte

La table [text] : les couleurs du miroir en texte coloré.

Clé Défaut Rôle
text.commands["curl"]les mots qui commencent une ligne de commande à mettre en valeur, dans un bloc de code du miroir en couleur
text.accent"cyan"la couleur d'accent unique d'ansi/ : les liens, les [ tags ], les puces de liste, le code en ligne, les lignes de commande, l'encadré INFO, et (dans un bloc de code coloré) les mots-clés et les identifiants natifs

Une ligne de bloc de code qui commence par l'un des mots de text.commands, seul ou après une invite, $ ou # suivi d'une espace, prend la couleur d'accent dans ansi/ ; txt/ n'a aucune couleur (le miroir en texte).

text.accent vaut l'un des huit noms de couleur black, red, green, yellow, blue, magenta, cyan (le défaut), white, ou un index de 256 couleurs de 16 à 255, tel que 208 pour l'orange. Toute autre valeur arrête la construction. Un site.<lang>.toml peut régler son propre accent pour cette langue.

[text]
commands = ["curl", "docker", "python3"]
accent = 208

Robots

Deux tables, une par robots.txt qu'écrit la construction (SEO).

Clé Défaut Rôle
robots.disallow["/txt/", "/ansi/"]le robots.txt du site : les chemins que les moteurs de recherche sont priés d'ignorer, les miroirs en texte
robots_man.disallow["/"]txt/robots.txt, le robots.txt de l'hôte en texte brut : tout

Chaque chemin devient une ligne Disallow: ; une liste vide écrit Allow: / à la place. Le robots.txt du site indique aussi sitemap.xml.

[robots]
disallow = ["/txt/", "/ansi/", "/drafts/"]

Vérification du thème

La table [check] appartient au thème : lue par build.py --check (tilder 1.2), elle se règle dans theme/theme.toml ; content/site.toml peut aussi la régler, fusionnée par-dessus celle du thème comme toute autre table. unstyled, les classes que le thème laisse sans style à dessein (défaut []) ; contrast, les paires de couleurs à vérifier (défaut [], rien de vérifié) ; contrast_min, le contraste minimal de chaque paire (défaut 4.5). Chaque clé est décrite dans vérifier un thème.

Voir aussi

↑ haut de page