Guide de démarrage rapide

Bienvenue dans la documentation de sansCMS. Ce guide vous aidera à démarrer rapidement avec votre nouveau CMS sans base de données.

Qu'est-ce que sansCMS ?

sansCMS est un CMS léger qui utilise des fichiers Markdown au lieu d'une base de données. Concrètement, cela veut dire : pas de requêtes SQL à optimiser, pas de vulnérabilités d'injection SQL à surveiller, un contenu qu'on édite en Markdown, et un site qu'on peut déplacer en copiant simplement un dossier.

Installation

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • PHP 8.1 ou supérieur
  • Un serveur web (Apache, Nginx)
  • Accès en écriture au dossier logs/

Étapes d'installation

  1. Téléchargez sansCMS depuis le dépôt du projet
  2. Décompressez l'archive dans votre dossier web
  3. Configurez le fichier config/site.json
  4. Créez votre première page dans pages/
cd /var/www/html
git clone https://github.com/votre-repo/sanscms.git
cd sanscms
chmod -R 755 logs/

Créer votre première page

Créez un fichier 1-home.md dans le dossier pages/ : ce nom exact est requis pour que sansCMS reconnaisse la page d'accueil.

---
titre: Ma page d'accueil
description: Bienvenue sur mon site
prive: false
brouillon: false
---

# Bienvenue sur mon site !

Ceci est ma première page avec sansCMS.

Structure d'un fichier Markdown

Chaque fichier Markdown contient deux parties.

1. Les métadonnées (front matter)

Les métadonnées sont définies entre --- au début du fichier :

ChampTypeDescriptionRequis
titrestringTitre de la pageOui
permalienstringURL personnalisée (sinon dérivée du nom de fichier)Non
descriptionstringMeta description SEONon
privestringHash bcrypt : rend la page protégée par mot de passeNon
brouillonbooleanMasquer la pageNon
datedateDate de publication (sa présence transforme la page en article de blog)Non
auteurstringAuteur du contenuNon
tagsstringTags séparés par des virgulesNon

2. Le contenu

Après les métadonnées, écrivez votre contenu en Markdown :

## Titre de niveau 2

Paragraphe avec du **gras** et de l'*italique*.

- Liste à puces
- Deuxième élément

1. Liste numérotée
2. Deuxième élément

[Lien vers une page](https://example.com)

Configuration

Le fichier config/site.json contient toute la configuration :

{
  "site": {
    "name": "Mon Site",
    "description": "Description de mon site",
    "contact_email": "contact@example.com"
  },
  "theme": {
    "name": "pico",
    "posts_per_page": 10
  },
  "features": {
    "cache_enabled": true,
    "stats_enabled": true
  }
}

Options principales

Cache

Le cache améliore considérablement les performances :

{
  "features": {
    "cache_enabled": true,
    "cache_ttl": {
      "markdown": 3600,
      "pages": 7200
    }
  }
}

Statistiques

Activez les statistiques pour suivre les visites :

{
  "features": {
    "stats_enabled": true,
    "stats_access_enabled": false
  }
}

Fonctionnalités avancées

Pages privées

Protégez vos pages par mot de passe avec un hash bcrypt dans le champ prive :

---
titre: Page confidentielle
permalien: secret
prive: $2y$10$votre_hash_bcrypt_ici
---

Le hash se génère en PHP avec password_hash('votre_mot_de_passe', PASSWORD_BCRYPT).

Articles de blog

Créez des articles avec une date :

---
titre: Mon premier article
permalien: mon-article
date: 2025-01-15
auteur: John Doe
tags: tutoriel, débutant
---

Table des matières automatique

Insérer la balise suivante en début de contenu génère un sommaire à partir des titres de niveau 2 (##) qui suivent :

[TOC]

Les titres H3 et H4 reçoivent un ancrage pour être ciblés par un lien direct, mais n'apparaissent pas dans le sommaire lui-même.

Blocs d'alerte

sansCMS reconnaît nativement des blocs d'alerte dans le Markdown, sans avoir besoin d'écrire du HTML :

:::info
Ceci est une information importante.
:::

:::warning
Soyez prudent avec cette fonctionnalité.
:::

:::danger
Action irréversible !
:::

:::success
Opération réussie !
:::

Les types note, tip, caution et important sont également disponibles.

Prochaines étapes

Maintenant que vous maîtrisez les bases, jetez un œil à :

Besoin d'aide ?

Contactez-nous via la page de contact du site.