Configuration avec ZenConfig

Fichiers de configurations

Chaque site a pour fichiers de configuration: site.ini pour les variables du site et theme.ini pour les variables du thème.

Ces fichiers se trouvent dans le répertoire : /data/sites/PROJECT/

ZenConfig est un format pour configurer les données de configuration.

Les fichiers ZenConfig sont des fichiers texte, le formatage est proche de TOML et des fichiers INI.

Spécifications du format

Les commentaires.

les commentaire commence par un '#' en début de ligne :

# les commentaire commence par un '#'

Clés/Valeurs

La clé/valeur est l’élément le plus basique. Un symbole : sépare le nom et la valeur de chaque clé. À gauche du signe : se trouve la clé (nom de la variable). La clé ne contient que des lettres et des chiffres et le underscore. Les valeurs peuvent être de type chaine de caractère, nombre, booléen, null, tableau, objet.

# clé: valeur
name: "Namaskar" 
theme: "bootstrap5"
version: 2.3
ajax: false

# ceci est un objet
langue :  { label : "English", url : "en"}

# ceci est un tableau
fruits: ["pomme", "banane", "orange" ]

Sections

Une section apparaît entre crochets ([]) sur sa propre ligne. Après la définition d'une section, toutes les clés seront liées à cette section. Les sections se terminent à la toute prochaine désignation de section ou à la fin du document ; il n’y a pas de séparateur spécifique de “fin de section”.

# nom de la section :
[site]
name: "Namaskar" 
theme: "bootstrap5"

[site.language]
default: "fr"
menu: [
    { label : "fr", url : ""},
    { label : "en", url : "en"}
]


[site.menu]

main: [
    { label : "Accueil", url : ""},
    { label : "Documentation", url : "documentation"},
    { label : "Téléchargement",  url : "download"}
]

Les valeurs pourront être lues depuis les templates de la manière suivante :

{{ site.name }}
{{ site.language.default }}

Si une variable n'existe pas, la valeur renvoyé est null.

Exemple de lecture des variables depuis un template

# Namaskar.fr

[site]
name: "Namaskar" 
domain: "namaskar.fr" 
 
[site.menu]

main: [
    { label : "Accueil", url : ""},
    { label : "Documentation", url : "documentation"},
    { label : "Téléchargement",  url : "download"}
]
{{ site.name }}
{% for item in site.menu.main %}
<li class="nav-item">

  {% if item.active %}
  <span class="nav-link active" aria-current="page">{{ item.label }}
  </span>
  {% else %}
  <a href="{{ homepath }}/{{ item.url }}" class="nav-link">{{ item.label }}
  </a>
  {% end if %}
</li>
{% end for %}