Suppression de redondances
This commit is contained in:
69
README.md
69
README.md
@@ -2,32 +2,33 @@
|
|||||||
|
|
||||||
Générateur de site statique minimaliste alimenté par des fichiers Markdown.
|
Générateur de site statique minimaliste alimenté par des fichiers Markdown.
|
||||||
|
|
||||||
Écrivez du contenu en `.md`, lancez `python3 build.py`, déployez les fichiers HTML générés.
|
Écrivez du contenu en `.md`, lancez `python3 build.py`, et roulez jeunesse.
|
||||||
|
|
||||||
## Fonctionnalités
|
## Fonctionnalités
|
||||||
|
|
||||||
- Pages et articles en Markdown avec coloration syntaxique
|
- Pages et articles en Markdown avec coloration syntaxique (imaginez créer des pages de votre site avec Obsidian !)
|
||||||
- Page d'accueil générée automatiquement (5 derniers articles, du plus récent au plus ancien)
|
- Page d'accueil générée automatiquement (5 derniers articles, du plus récent au plus ancien)
|
||||||
- Catégorisation automatique des articles avec arborescence de dossiers
|
- Catégorisation des articles avec arborescence de dossiers automatique (ou non)
|
||||||
- Métadonnées par article : titre, date, auteur, catégorie, image de couverture
|
- Métadonnées par article : titre, date, auteur, catégorie, image de couverture
|
||||||
- Dark mode : automatique selon l'heure (light 08h30–17h30) + toggle manuel mémorisé
|
- Dark mode : automatique selon l'heure (light 08h30–17h30) + toggle manuel mémorisé
|
||||||
- Ancres cliquables sur les titres `h1`–`h4`
|
- Ancres cliquables sur les titres `h1`–`h4`
|
||||||
- HTML personnalisé dans les articles
|
- Possibilité d'integration de snippets HTML
|
||||||
- Menu avec filtrage automatique des liens invalides et distinction liens internes/externes
|
- Menu avec masquage automatique des liens invalides
|
||||||
- Aucune dépendance JavaScript côté client
|
- Aucune dépendance JavaScript côté client
|
||||||
|
|
||||||
## Prérequis
|
## Prérequis
|
||||||
|
|
||||||
- Python 3.x
|
- Python 3
|
||||||
- `pip install markdown`
|
- `pip install markdown`
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/votre-repo/pagemark
|
git clone https://git.azuze.fr/kawa/pagemark
|
||||||
cd pagemark
|
cd pagemark
|
||||||
pip install markdown
|
pip install markdown
|
||||||
```
|
```
|
||||||
|
Une image Docker arrive bientot©
|
||||||
|
|
||||||
## Structure du projet
|
## Structure du projet
|
||||||
|
|
||||||
@@ -45,7 +46,7 @@ pagemark/
|
|||||||
├── categories.md # Mapping catégories → dossiers de sortie
|
├── categories.md # Mapping catégories → dossiers de sortie
|
||||||
├── images/ # Images référençables via /images/fichier.jpg
|
├── images/ # Images référençables via /images/fichier.jpg
|
||||||
└── pages/
|
└── pages/
|
||||||
├── index.md # Contenu optionnel affiché au-dessus des articles
|
├── index.md # Contenu optionnel affiché au-dessus des articles en page d'accueil
|
||||||
└── *.md # Vos pages et articles
|
└── *.md # Vos pages et articles
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -65,7 +66,7 @@ Le blog d'un passionné de technologie
|
|||||||
**`md/footer.md`** — pied de page en Markdown :
|
**`md/footer.md`** — pied de page en Markdown :
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
© 2026 Votre Nom
|
© 2026 Votre Nom - Propulsé par un 1.2l 16v
|
||||||
```
|
```
|
||||||
|
|
||||||
**`md/menu.md`** — liste de liens. Les liens internes sont filtrés automatiquement (masqués si la page n'existe pas), les liens externes s'ouvrent dans un nouvel onglet avec le suffixe `↗` :
|
**`md/menu.md`** — liste de liens. Les liens internes sont filtrés automatiquement (masqués si la page n'existe pas), les liens externes s'ouvrent dans un nouvel onglet avec le suffixe `↗` :
|
||||||
@@ -92,7 +93,6 @@ Créez un fichier `.md` dans `md/pages/`. Les métadonnées se placent en tête
|
|||||||
Contenu de l'article en Markdown...
|
Contenu de l'article en Markdown...
|
||||||
```
|
```
|
||||||
|
|
||||||
> Une page sans `::Date:` est une page statique (elle n'apparaît pas dans le listing de la page d'accueil).
|
|
||||||
|
|
||||||
### 3. Générer le site
|
### 3. Générer le site
|
||||||
|
|
||||||
@@ -103,22 +103,24 @@ python3 build.py
|
|||||||
### 4. Tester en local
|
### 4. Tester en local
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python3 -m http.server 3000
|
python3 -m http.server 6969
|
||||||
```
|
```
|
||||||
|
|
||||||
Puis ouvrez [http://localhost:3000](http://localhost:3000).
|
Puis ouvrez [http://localhost:6969](http://localhost:6969).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Métadonnées
|
## Métadonnées
|
||||||
|
|
||||||
|
Placez des métadonnées en début de fichier afin de beneficier des certaines fonctionnalités comme les categories et l'affichage d'une card en page d'accueil.
|
||||||
|
|
||||||
| Métadonnée | Syntaxe | Rôle |
|
| Métadonnée | Syntaxe | Rôle |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `::Titre:` | `::Titre:Mon titre` | Affiché en `<h1>` avant le contenu |
|
| `::Titre:` | `::Titre:Mon titre` | Affiché en `<h1>` avant le contenu |
|
||||||
| `::Date:` | `::Date:dd/mm/YYYY` | Date de publication, utilisée pour le tri |
|
| `::Date:` | `::Date:dd/mm/YYYY` | Date de publication, utilisée pour le tri |
|
||||||
| `::Auteur:` | `::Auteur:Pseudo` | Nom de l'auteur |
|
| `::Auteur:` | `::Auteur:Pseudo` | Nom de l'auteur |
|
||||||
| `::Categories:` | `::Categories:Blog-Tutos` | Catégorie et sous-catégorie |
|
| `::Categories:` | `::Categories:Blog-Tutos` | Catégorie et sous-catégorie |
|
||||||
| `::Image:` | `::Image:/images/cover.jpg` | Image de couverture dans les cards |
|
| `::Image:` | `::Image:/images/cover.jpg` | Image de couverture pour les cards |
|
||||||
|
|
||||||
Toutes les métadonnées sont optionnelles. Seules les pages avec `::Date:` sont traitées comme des **articles** et apparaissent dans le listing de la page d'accueil.
|
Toutes les métadonnées sont optionnelles. Seules les pages avec `::Date:` sont traitées comme des **articles** et apparaissent dans le listing de la page d'accueil.
|
||||||
|
|
||||||
@@ -126,10 +128,12 @@ Toutes les métadonnées sont optionnelles. Seules les pages avec `::Date:` sont
|
|||||||
|
|
||||||
## Catégories
|
## Catégories
|
||||||
|
|
||||||
Le fichier `md/categories.md` mappe les noms de catégories vers des dossiers de sortie :
|
Les dossiers de catégories sont crées automatiquement et placés a la racine du site par défaut.
|
||||||
|
|
||||||
|
Pour en modifier l'emplacement, modifiez le fichier `md/categories.md` comme suit :
|
||||||
|
|
||||||
```
|
```
|
||||||
- Blog:/blog
|
- Categorie:/dossier
|
||||||
- News:/news
|
- News:/news
|
||||||
- Tutoriels:/tutos
|
- Tutoriels:/tutos
|
||||||
```
|
```
|
||||||
@@ -141,7 +145,7 @@ Le fichier `md/categories.md` mappe les noms de catégories vers des dossiers de
|
|||||||
3. Fichier `mon-article.md` → généré dans `news/tech/mon-article/index.html`
|
3. Fichier `mon-article.md` → généré dans `news/tech/mon-article/index.html`
|
||||||
4. URL : `/news/tech/mon-article/`
|
4. URL : `/news/tech/mon-article/`
|
||||||
|
|
||||||
Si une catégorie n'est pas dans `categories.md`, son nom en minuscules est utilisé comme dossier.
|
Si une catégorie n'est pas dans `categories.md`, son nom en minuscules est utilisé comme nom de dossier.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -170,7 +174,7 @@ Placez vos images dans `md/images/` et référencez-les dans le Markdown :
|
|||||||

|

|
||||||
```
|
```
|
||||||
|
|
||||||
Pour l'image de couverture d'un article (affichée dans les cards de la page d'accueil) :
|
Pour ajouter une image de couverture d'article (affichée dans les cards de la page d'accueil) rajoutez ceci dans les metadatas :
|
||||||
|
|
||||||
```
|
```
|
||||||
::Image:/images/cover.jpg
|
::Image:/images/cover.jpg
|
||||||
@@ -197,7 +201,7 @@ Les variables CSS `var(--bg)`, `var(--text)`, `var(--accent)`, etc. s'adaptent a
|
|||||||
| Comportement | Détail |
|
| Comportement | Détail |
|
||||||
|---|---|
|
|---|---|
|
||||||
| **Par défaut** | Light de 08h30 à 17h30, dark le reste du temps |
|
| **Par défaut** | Light de 08h30 à 17h30, dark le reste du temps |
|
||||||
| **Manuel** | Bouton `☾` / `☀` dans la barre de navigation |
|
| **Manuel** | Bouton `☾` / `☀` dans la barre de navigation > *désactive le machanisme auto quand utilisé*|
|
||||||
| **Mémorisation** | Le choix est sauvegardé via `localStorage` — il prend le dessus sur le comportement automatique |
|
| **Mémorisation** | Le choix est sauvegardé via `localStorage` — il prend le dessus sur le comportement automatique |
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -214,33 +218,12 @@ L'`id` est généré à partir du texte du titre (minuscules, tirets à la place
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Déploiement avec nginx
|
## Workflow
|
||||||
|
|
||||||
Copiez les fichiers générés vers votre serveur. Configuration nginx minimale :
|
1. Éditer `md/pages/mon-article.md`
|
||||||
|
2. Générer les site avec `python3 build.py`
|
||||||
```nginx
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name monsite.com;
|
|
||||||
root /var/www/pagemark;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
try_files $uri $uri/index.html =404;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
La directive `try_files $uri $uri/index.html` permet de résoudre `/mon-article/` → `/mon-article/index.html` sans redirection.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Workflow recommandé
|
|
||||||
|
|
||||||
```
|
|
||||||
1. Éditer md/pages/mon-article.md
|
|
||||||
2. python3 build.py
|
|
||||||
3. Copier les fichiers générés sur le serveur
|
3. Copier les fichiers générés sur le serveur
|
||||||
```
|
|
||||||
|
|
||||||
Pour automatiser le déploiement, un simple script shell suffit :
|
Pour automatiser le déploiement, un simple script shell suffit :
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user