Plugin flexweg-rss
Le plugin génère des feeds RSS 2.0 pour votre site public — un feed site-wide et autant de feeds par catégorie que vous voulez. Les items sont triés du plus récent au plus ancien ; chacun porte
Le plugin flexweg-rss génère des feeds RSS 2.0 pour votre site public — un feed site-wide et autant de feeds par catégorie que vous voulez. Les items sont triés du plus récent au plus ancien ; chacun porte titre, description, lien, pubDate, auteur et une enclosure optionnelle pour l'image hero.
Ce qu'il génère
| Feed | Path sur Flexweg | Nombre d'items par défaut |
|---|---|---|
| Site-wide | /rss.xml |
20 |
| Par catégorie | /<slug-cat>/<slug-cat>.xml |
20 (configurable par feed) |
| Stylesheet | /rss.xml.xsl |
(unique, partagé) |
Les feeds par catégorie utilisent un slug doublé (/news/news.xml plutôt que /news/index.xml) pour ne pas collisionner avec le HTML de l'archive à /news/index.html.
Le stylesheet XSL rend les feeds en table HTML stylée quand ouverts directement dans un navigateur — les lecteurs RSS ignorent le PI <?xml-stylesheet?> et parsent le XML normalement.
Feeds par langue (multilang)
Si flexweg-multilang est activé ET que le feed site-wide est activé, le plugin génère aussi /<lang>/rss.xml pour chaque langue secondaire — symétrique avec le path primaire.
Les feeds par langue ont :
- Titre du channel suffixé avec le code de langue
- Items uniquement pour les posts qui ont une traduction dans cette langue
- URLs et titres traduits
<channel><language>correspondant
L'intégration se fait via le filtre rss.site.locales. Voir Référence des hooks.
Réglages
/settings/plugin/flexweg-rss expose :
Onglet Feed du site
- Activer le feed du site — toggle. Par défaut OFF.
- Nombre d'items — combien d'items dans
/rss.xml. Défaut 20, max 100. - Catégories exclues — checkbox par catégorie. Les posts de ces catégories ne sont pas inclus dans le feed du site.
- Ajouter au footer — si coché, ajoute une entrée RSS dans le footer du site (via le filtre
menu.json.resolved).
Onglet Feeds par catégorie
- Catégories activées — combobox + bouton Add. Chaque feed peut avoir son propre nombre d'items + toggle "Ajouter au footer".
Actions
- Upload stylesheet — re-upload uniquement
/rss.xml.xsl(utile après changement de langue admin) - Force regenerate — re-construit tout (XSL + tous les feeds activés)
Important : baseUrl obligatoire
Sans settings.baseUrl, le plugin noop. Les feeds ont besoin d'URLs absolues pour <link> et <guid>.
Le hook lifecycle
Sur publish.complete, post.unpublished, post.deleted, le plugin :
- Si le feed du site est activé : régénère
/rss.xml - Si une catégorie correspondante a un feed activé : régénère
/<slug>/<slug>.xml - Si le feed par langue est généré (via multilang) : régénère
<lang>/rss.xml
Le pass est rapide (~100 ms par feed) — pas d'impact visible sur le temps de publication.
Désactivation
Désactiver le toggle du feed du site supprime automatiquement /rss.xml et les <lang>/rss.xml la prochaine fois qu'un save tourne (le pattern cleanupRemovedFeeds).
Désactiver le plugin entier ne supprime PAS les fichiers existants — ils restent jusqu'à suppression manuelle.
L'enclosure (image hero)
Si un post a un heroMediaId, le feed embarque une <enclosure> pointant vers la variante large (ou fallback defaultFormat puis la plus grande). Cela permet aux lecteurs RSS qui supportent les images de rich-display avec l'image hero.
Format de description
description est l'extrait du post si présent, sinon un plain-text snippet de 300 chars depuis le markdown. markdownToPlainText neutralise les images, liens, code fences pour produire quelque chose de lisible sans HTML.
Tri et limites
Items triés par publishedAt DESC avec fallback updatedAt / createdAt. Limité par le itemCount configuré. Aucune pagination de feed (RSS pure n'a pas de pagination — les lecteurs sont censés tenir leur historique).
Pour les sites avec beaucoup de posts, gardez itemCount raisonnable (20-50). Plus haut fait juste un fichier plus gros sans bénéfice utilisateur perceptible.
XSL et localisation
Le stylesheet est unique et partagé entre le feed du site et les feeds par catégorie. Les labels (« Item », « Date », « Author », etc.) sont localisés selon settings.language.