Table of Contents

Pelican

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 :

venv.ps1
$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 :

start.bat
@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.

article.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_**.

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

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 :

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

pelicanconf.py
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.