Les CMS "Flat File"
Ces dernières années - en parallèle des CMS traditionnels du marché - s'est développée la catégorie des Flat File CMS. Ces derniers ont la particularité de ne pas avoir de base de données associée, et stockent les données sous forme de fichiers plats.
Il y a plusieurs avantages à l'utilisation de ce type d'outil :
- rapidité : sans requêtes SQL et grâce à l'utilisation de systèmes de cache, ils apportent une meilleure vitesse d'affichage que les CMS traditionnels.
- simplicité : les informations se trouvent souvent dans des dossiers bien précis, et on arrive facilement à s'y retrouver, la courbe d'apprentissage est rapide.
- sécurité : il est plus simple de sécuriser une structure de dossiers, qu'avoir également à sécuriser un accès à une base de données.
- sauvegarde / migration : il suffit d'un copier / coller pour sauvegarder tout votre site, un gain de temps appréciable (et moins de stress).
Pour quel type de projet ?
Ils ne conviennent pas à tous les projets. Il faudra se questionner sur la nécessité ou non d'avoir une base de données. Cela dépend essentiellement des fonctionnalités que l'on souhaite pour son site, par exemple un blog personnel ou site e-commerce avec un fort traffic.
Il faut aussi souligner que ces outils sont moins "user friendly" que les CMS traditionnels. Ils conviennent en général mieux à des développeurs / webdesigners et toute personne qui acceptera d'apprendre des notions de développement web.
Après l'avoir testé pendant suffisamment longtemps, j'ai adopté le logiciel Grav pour la création de ce site, je vais ici faire une présentation de cet outil.

Grav est un logiciel récent, actuellement en version 1.6. Il est distribué en Open Source et est à ce jour gratuit. Il existe aussi une offre Premium qui comprend des plugins, thèmes et squelettes de sites.
Le module de base (core module) contient le système, les fonctionnalités sont ajoutés à l'aide de plugins (il en existe + de 300). La mise en forme du site se fait grâce au thème sélectionné. Il est possible de customiser un thème existant ou d'en télécharger.
Le langage serveur est évidemment PHP. Les fichiers de configuration sont au format yaml ou json, le contenu des pages et articles s'écrit en markdown, et les templates des thèmes utilisent twig. Les développeurs Symfony devraient s'y retrouver ;)
lien vers le site officiel de Grav
Installation
Il faut télécharger Grav core ou Grav core + le plugin Admin. Je recommande de prendre le plugin d'administration, car en dehors de l'interface il ajoute des fonctionnalités de base : connexion, formulaires et page d'erreur 404. Pour aller plus vite, il est aussi possible de télécharger un squelette de site (Skeleton Package), qui contient un thème, un ensemble de plugins et du contenu.
Ensuite il faut décompresser l'archive et mettre le dossier obtenu dans le dossier webroot (www) de votre serveur web, ou créer un "virtual host". La version actuelle nécessite PHP 7.1.3 ou plus.
Ensuite depuis le navigateur vous devriez pouvoir accéder à votre site; en cas de soucis des messages d'erreur vous indiquent ce qui ne va pas (généralement des modules du serveur web à activer). Si vous avez installé le plugin Admin, celui-ci vous demandera de créer un utilisateur pour vous y connecter.
Pour le développement si vous utilisez Linux ou Mac OS X, il faudra gérer les droits utilisateurs avec les commandes chown et chmod. Quant au déploiement sur un serveur de production il faudra également bien gérer les droits pour des raisons de sécurité. Voir la documentation officielle à ce sujet.
Structure du projet et CLI
Dans l'arborescence d'un projet Grav, seul le dossier /user contient des fichiers que vous pourriez créer / modifier :
- /user/config : les différents fichier de configuration du site
- /user/pages : les différentes pages du site.
- /user/plugins : les plugins installés sur le site. attention installé ne signifie pas activé, chaque plugin contient un fichier yaml à sa base dont le premier attribut est enabled(booléen) qui définit si le plugin est activé
- /user/themes : les différents thèmes accessibles, si vous en téléchargez c'est à cet endroit qu'il faudra les placer
Le CLI fourni permet d'installer des plugins ou des thèmes, et d'autres opérations courantes (créer une sauvegarde, vider le cache, etc.). Pour obtenir la liste des commandes disponibles il faut ouvrir un terminal et taper :
$ bin/grav list
Le CLI de Grav a été conçu pour des systèmes de type Linux ou Mac OS X, pour l'utiliser sous Windows il faudra utiliser Git BASH
Le plugin d'administration
Le plugin fournit une interface d'administration accessible depuis [url du site]/admin.
Concrètement ce plugin permet de gérer toute la configuration, les thèmes et plugins installés ainsi que de gérer le contenu (pages, articles, images, etc.) sans avoir à passer par le système de fichier. Il permet également d'exécuter les commandes du CLI.
Même si il est optionnel, le confort apporté est très appréciable.
C'est fini pour la présentation de Grav, j'espère que cela vous aura donné envie d'en savoir plus, voire même que vous l'avez déjà installé et que vous vous êtes plongé dans la documentation :)
A propos de l'auteur
Tanguy Dechiron
Développeur web fullstack (Symfony++).
Passionné de littérature fantasy, jeux de société.
Cycliste du dimanche.