Pelican - Notes générales

Page à mettre à jour

Notes personnelles, selon mon avancement la compréhension du fonctionnement de Pelican.

Notes d'installation du générateur de sites statiques Pelican. On me l'a conseillé parce que Python, parce que simple pour les idiots qui n'ont pas envie de se prendre le chou avec Hugo ou Jekyll.

Notes suite à une installation pour test sur un conteneur Debian 12 sous Proxmox.

Installation

On installe pip, Python3 était déjà installé sur mon conteneur Debian :

apt install python3-pip -y

Définir une environnement virtuel Python

Sous Linux

mkdir undossier python3 -m venv ~/undossier source undossier/bin/activate

Sous Windows

python -m venv undossier .\undossier\Scripts\activate

Comme je suis une feignasse, j'ai fait un script PowerShell pour ne pas me faire chier sous Windows :

$path_global = "H:\Dev" $path_venv = "Python\venv" $py_activate = "Scripts\activate.ps1" Set-Location -Path $path_global powershell -noexit ".\$path_venv\$py_activate ; cd Pelican-test"

Et je le lance avec un batch (oui) en utilisant Windows Terminal :

@ECHO OFF SET folder="H:\Dev" wt PowerShell -c %folder%\venv.ps1

Installer Pelican

On installe Pelican :

pip install "pelican[markdown]"

Créer un premier site

On créé un dossier et on lance l'assistant de Pelican :

mkdir monsupersite cd monsupersite pelican-quickstart

On répond aux questions de l'assistant :

pelican-quickstart
Welcome to pelican-quickstart v4.10.1.
This script will help you create a new Pelican-based website.
Please answer the following questions so this script can generate the files
needed by Pelican.
> Where do you want to create your new web site? [.]
> What will be the title of this web site? Erreur503
> Who will be the author of this web site? Yahiko
> What will be the default language of this web site? [en] fr
> Do you want to specify a URL prefix? e.g., https://example.com (Y/n) Y
> What is your URL prefix? (see above example; no trailing slash) https://blog.erreur503.xyz
> Do you want to enable article pagination? (Y/n) Y
> How many articles per page do you want? [10] 5
> What is your time zone? [Europe/Rome] Europe/Paris
> Do you want to generate a tasks.py/Makefile to automate generation and publishing? (Y/n) Y
> Do you want to upload your website using FTP? (y/N) N
> Do you want to upload your website using SSH? (y/N) y
> What is the hostname of your SSH server? [localhost]
> What is the port of your SSH server? [22]
> What is your username on that server? [root]
> Where do you want to put your web site on that server? [/var/www]
> Do you want to upload your website using Dropbox? (y/N)
> Do you want to upload your website using S3? (y/N)
> Do you want to upload your website using Rackspace Cloud Files? (y/N)
> Do you want to upload your website using GitHub Pages? (y/N)
Done. Your new project is available at /root/pelican

Créer une page

Dans monsupersite/content on créé un fichier md.

Title: Mon super article Date: 2024/11/13 21:43 Category: 3615 Ma vie Tags: pelican, ma vie, test, osef Slug: mon-super-article Authors: Lapinours # Titre 1 ## Titre 2 Wow, un **super** article sur `Pelican`. Tellement _beau_ et **_frais_**.

Gérer les images

Pour générer automatiquement les miniatures des images, je suis passé par le plugin image-process.

pip install pelican-image-process

Dans pelicanconf.py

IMAGE_PROCESS = { "thumb": { "type": "image", "ops": ["crop 0 0 50% 50%", "scale_out 150 150 True", "crop 0 0 150 150"], }, "article-image": { "type": "image", "ops": ["scale_in 600 600 True"], }, }

Dans les articles en Markdown :

[![Jack Chirac]({static}/images/JACK.jpg){: .image-process-article-image}]({static}/images/JACK.jpg)

Notes infrapaginales

(Merci Lamecarlate pour le mot !)

Normalement en Markdown étendu, les notes de bas de page se font de la manière suivante :

Blabla[^1] [^1] Source du blabla

Peu d'éditeurs de Markdown le supportent, encore moins Pelican. Il existe le plugin simple-footnotes.

Installer :

pip install pelican-simple-footnotes

L'utiliser :

Blabla[ref]Source du blabla[/ref]

Tester

Pour tester rapidement le site il est possible de lancer le serveur web intégré :

pelican -r -l

Le site sera accessible sur http://127.0.0.1:8000.

Publier

pelican /chemin/monsupersite/content -s /chemin/monsupersite/pelicanconf.py

Pour le développement du site, il est possible d'activer des chemins relatifs dans pelicanconfig.py

# Uncomment following line if you want document-relative URLs when developing RELATIVE_URLS = True

La commande make html permet aussi d'exporter le site en HTML en utilisant pelicanconfig.py.

make publish va publier le site selon le fichier de conf make publish

Les thèmes

Les thèmes Pelican utilisent le moteur de template Jinja.

Les documentations utiles :

Pelican - Themes

Jinja - Template Designer Documentation

On va éditer le fichier de conf du site pour lui indiquer où est le thème :

THEME = "../themes/monsupertheme"

L'aborescence d'un thème est la suivante (traduite de la doc de Plecian) :

├── static
│ ├── css
│ └── images
└── templates
├── archives.html // Archives
├── article.html // Traite les pages pour chaque article
├── author.html // Traite les pages pour chaque auteur
├── authors.html // Liste de tous les auteurs
├── categories.html // Liste de toutes les catégorie
├── category.html // Traite les pages pour chaque catégories
├── index.html // L'index qui liste tous les articles
├── page.html // Traite les pages pour chaque page
├── period_archives.html // Affiche les archives
├── tag.html // Traite les pages pour chaque tag
└── tags.html // Liste tous les tags. Peut être un nuage de tags.