Format de stockage des pages web

Les pages web sont stockées sous la forme d'un répertoire contenant :

  • un fichier "contenu" (actuellement nommé index.txt)
  • éventuellement des fichiers joints
  • éventuellement des sous-répertoires (= autres pages web)

Ce format s'inspire de ce qui est fait par les CMS Grav et Kirby. Ainsi il est possible de modifier le site web avec un simple éditeur de texte :)

Format du fichier contenu

Ce fichier est séparé en plusieurs blocs. Chaque bloc est séparé d'un autre par une ligne contenant seulement 4 tirets, précédée d'une ligne vide, et suivie d'une autre ligne vide (\n\n----\n\n).

Pour éviter un conflit avec la syntaxe markdown ou autre contenus, les lignes contenant seulement quatre tirets dans les contenus sont échappées : elles sont précédées d'un antislash.

Chaque bloc commence par des entêtes semblables aux entêtes HTTP : sur chaque ligne une clé, suivie de deux points :, d'un espace et de la valeur.

Après les entêtes suivent deux retours de ligne (\n\n) et le contenu du bloc, s'il y a un contenu. S'il n'y a pas de contenu, les entêtes sont suivis d'un séparateur de bloc.

Le premier bloc contient obligatoirement les méta-données du document, sous forme d'entêtes sans contenu.

Méta-données du document

Title: Nos activités
Published: 2012-05-23 17:35:00
Status: Online
  • Status indique le statut de la page, celui-ci peut être online (en ligne) ou draft (brouillon)
  • Published indique la date de publication au format Y-m-d H:i:s
  • Title représente le titre de la page

Blocs

La page est conçue comme une suite de blocs

Un bloc de contenu a forcément un entête Type. Ce type peut être :

  • columns : un ensemble de colonnes (le nombre est indiqué dans l'entête Columns)
  • column : une colonne
  • markdown : du texte formatté avec Markdown
  • skriv : du texte formatté avec SkrivML
  • gallery : une galerie de photos ou de fichiers
  • image : une image
  • code : du code à afficher tel quel
  • heading : un titre
  • quote : une citation
  • video : une vidéo externe

Les blocs de contenu ne peuvent être que dans des blocs de type column, et un bloc column ne peut être que dans un bloc columns.

À la suite d'un bloc column on peut trouver n'importe quel type de bloc. Si ce n'est pas un bloc de type column, ils seront ajoutés les uns à la suite des autres dans la colonne précédente.

Exemple de bloc avec deux colonnes

Nous voulons avoir deux colonnes sur notre page, la première avec un titre et un texte, et la seconde avec une image. Nous créons donc un bloc de type columns qui contient deux blocs de type column, et chacun de ces blocs contient des blocs de contenu.

Type: columns

----

Type: column

----

Type: heading

Notre association

----

Type: markdown

Notre association est fabriquée à base de nounours tout doux.

----

Type: column

----

Type: image

Logo_association.png


Attachments: