Passage à Pelican
Depuis le temps que je me disais qu'il fallait que je passe à un moteur de site statique (je n'ai absolument pas besoin personnellement d'interface web pour écrire des articles), voila, c'est fait.
À la base j'ai juste voulu écrire un article, plus long qu'un simple lien sur le Shaarli. Mais comment dire ? Rien qu'à l'idée de devoir se loguer sur le Drupal, se ballader dans l'interface pour ajouter un article etc. l'effet dissuasif avait sévit. J'en ai donc profité pour regarder -- vite fait bien sûr -- s'il n'y avait pas par hasard un thème Pelican qui m'aurait convenu. Puis j'ai testé. Au final, j'ai commencé à vouloir reprendre tout ce qu'il y avait sur le Drupal.
Moins de 24h plus tard, voila, j'ai poussé un site avec un contenu à peu près semblable à la place du site en Drupal.
Mise en place
Site de base
J'ai commencé, comme suggéré partout, par la commande quickstart.
$ pelican-quickstart
J'ai ensuite importé les articles, avec la commande import.
$ pelican-import --strip-raw --feed http://jonathan.michalon.eu/fr/blog.xml -o content
N'ayant évidemment récupéré que 10 articles, j'ai dû aller bidouiller dans les paramètres du module views de Drupal pour qu'il publie tous les articles dans le flux, puis relancé l'import.
Quelques petits ajustements étaient de mise, sinon compilation pas contente.
$ for file in content/*; do sed -i 's/^| //;s/brush://' $file; done
Grosso modo, l'import est raisonnable, y compris gras/italique/images. Le formattage des champs de syntaxhighlighter avaient perdu les sauts de lignes, donc il a fallu les rajouter à la main. J'ai aussi repris les images pour les inclure au site (l'import les ajoute bien, mais avec un lien).
On fera, à chaque essai, un make html, qui génèrera les fichiers HTML de notre site. Un mini serveur web python peut servir de test pour le dev en local, lancé par make serve, bien pratique. À savoir que, quand on fera make publish (automatiquement fait par un make rsync_upload par exemple), un fichier de configuration supplémentaire, publishconf.py sera ajouté et permettra de définir des paramètres "de prod".
Thème
J'ai ensuite passé un bon moment à tester quelques thèmes, en suivant les étapes documentées ici (principalement l'utilisation des git submodules), pour au final rester sur celui qui m'avait paru le plus simple, le thème actuel. Il a quand même fallu que je modifie des portions directement dedans, pour la traduction, la pagination, le CSS…
Structure
J'ai passé un temps certain sur la structure du site, pourtant extrêmement simple. Mais il y a pas mal de variantes, et le temps de comprendre ce qu'il se passe est souvent long…
Le "menu" en haut à droit est composé de 4 parties : le lien "home", que j'ai ici désactivé ; les fichiers de type "page" (liés par défaut) ; des pages générées de structure (comme la page archives) et enfin des entrées manuelles. Le blog est une entrée manuelle car je ne souhaitais pas l'avoir en page d'accueil. Le Shaarli est externe, donc manuel. Les deux pages "À propos" et "Ressources" sont automatiques.
Pour obtenir une page d'accueil, avec ce thème, il faut apparemment déplacer le blog et poser une autre page en index.html, via la métadonnée save_as de la page.
Les directives (dépendantes du thème) utilisées ici sont :
MENUITEMS = (
('Blog', '/blog_index.html', 'Microblogging'),
('Shaarli', 'http://jonathan.michalon.eu/shaarli', 'Microblogging'),
)
ARCHIVES_URL = 'archives'
ARCHIVES_SAVE_AS = 'archives/index.html'
MENU_INTERNAL_PAGES = (
('Archives', ARCHIVES_URL, ARCHIVES_SAVE_AS),
)
INDEX_SAVE_AS = 'blog_index.html'
DISPLAY_HOME = None
INDEX_SAVE_AS impose au template "index" d'écrire un fichier "blog_index.html", lui-même décliné par la pagination en "blog_indexN.html".
Vérifications
Bien entendu, une étape de vérification complète est nécessaire, pour retrouver les problèmes restants. L'opération est grandement facilitée, car on peut enfin taper à grand coup de grep dans le texte !
Enjoy !
Il me reste à finaliser et nettoyer, mettre tout ça sous git. Et bien sûr, écrire des articles beaucoup plus simplement, dans mon éditeur de texte favori, déployés grâce à un Makefile, sauvegardés facilement et par un bête git push et ne nécessitant ni PHP ni base de données ! :)
Pour l'anectote, j'ai voulu passer les noms de la page des applications Android de simple emphase (italique) à emphase prononcée (gras). Un coup de sed et hop ! :
$ sed -i -E 's/\* \*(.*)\*/\* \*\*\1\*\*/' content/pages/android.md
À noter que la page android.md la seule page en Markdown que j'ai pour l'instant, car on peut imposer des sauts de lignes sans changer de paragraphe tout simplement avec deux espaces en fin de ligne. Apparemment c'est pas prévu en reStructuredText.
Pour couronner le tout, ceci est apparemment mon 42e article ici…
Done: Processed 42 article(s), 0 draft(s) and 2 page(s) in 1.22 seconds.
Documentation
Liens pour la doc de Pelican 3.4.0, celui de Debian Jessie.
- Paramètres Pelican : http://docs.getpelican.com/en/3.4.0/settings.html
- Écrire du contenu : http://docs.getpelican.com/en/3.4.0/content.html
- Environnement des thèmes : http://docs.getpelican.com/en/3.4.0/themes.html
- Sur reStructuredText : http://sphinx-doc.org/rest.html