Plugin flexweg-sitemaps

Le plugin possède tout ce qui est lié au sitemap XML et sur votre site public. Il génère des sitemaps par année, un index de sitemaps, un sitemap Google News optionnel, et le * qui pointe les moteurs

Le plugin flexweg-sitemaps possède tout ce qui est lié au sitemap XML et robots.txt sur votre site public. Il génère des sitemaps par année, un index de sitemaps, un sitemap Google News optionnel, et le robots.txt qui pointe les moteurs de recherche vers tout ça.

Ce qu'il génère

Quand un post est publié / dépublié / supprimé, ou quand vous cliquez sur Force regenerate, le plugin upload :

Fichier Path sur Flexweg Objet
sitemap-<year>.xml /sitemaps/sitemap-2025.xml, /sitemaps/sitemap-2026.xml, … Un par année civile qui a du contenu en ligne
sitemap-index.xml /sitemaps/sitemap-index.xml Index master listant chaque sitemap annuel (+ news si activé)
sitemap-news.xml /sitemaps/sitemap-news.xml Urlset Google News — articles modifiés dans la fenêtre configurée
sitemap.xsl /sitemaps/sitemap.xsl Stylesheet navigateur (transforme .xml en table HTML stylée quand ouvert directement)
sitemap-news.xsl /sitemaps/sitemap-news.xsl Pareil pour le sitemap news
robots.txt /robots.txt Racine du site — pointe les crawlers vers sitemap-index.xml

Le bucket annuel est calculé depuis post.createdAt (fallback publishedAt puis updatedAt). Un post déplacé entre années sur plusieurs publications voit son ancien sitemap d'année réécrit sans lui et le nouveau réécrit avec lui.

Sitemaps par langue (multilang)

Si flexweg-multilang est activé :

  • Les URLs localisées sont ajoutées aux sitemaps annuels (chaque post a une entrée par langue avec sa propre URL)
  • Les <xhtml:link rel="alternate" hreflang="..."> sont injectés dans chaque entrée pour signaler les variantes
  • Si News est activé, des sitemaps News par langue (sitemap-news-fr.xml, etc.) sont produits en plus du sitemap News primaire

Cette intégration multilang se fait via les filtres sitemap.urls.extra, sitemap.url.entry, sitemap.urlset.namespaces, sitemap.index.extra, sitemap.news.locales. Voir Référence des hooks.

Réglages

/settings/plugin/flexweg-sitemaps expose :

  • Types de contenuposts uniquement (par défaut) ou posts + pages. Si pages activées, les pages sont incluses dans le sitemap de leur année de création.
  • Toggle News — active la génération de sitemap-news.xml. Désactivé par défaut (utile uniquement pour les sites éditoriaux qui veulent apparaître dans Google News).
  • Fenêtre News (jours) — combien de jours en arrière inclure dans le sitemap News. Défaut 2 (Google News exige < 2 jours).
  • robots.txt éditable — texte éditable. Au save, le robots.txt est uploadé tel quel à la racine du site. Un bouton Insert default repose le contenu par défaut (pointant vers le sitemap index).
  • Upload stylesheets — bouton qui re-upload uniquement les XSL (sitemap.xsl + sitemap-news.xsl si News est actif). Pratique après un changement de langue admin (les labels XSL sont localisés).
  • Force regenerate — re-construit tout : XSL + sitemaps annuels + index + News + robots.

Important : baseUrl obligatoire

Sans settings.baseUrl, le plugin noop à chaque déclenchement. Les sitemaps ont besoin de URLs absolues — sans baseUrl, on uploaderait un sitemap rempli de chemins relatifs.

Si vous voyez un warning console [flexweg-sitemaps] skipping — baseUrl not configured, allez dans Réglages → Général → URL de base et renseignez-la.

Le hook lifecycle

Sur publish.complete, post.unpublished, post.deleted, le plugin :

  1. Détermine l'année du post (post.createdAt)
  2. Re-construit uniquement le sitemap de cette année (incremental, pas tout le set)
  3. Re-construit le sitemap-index (peu coûteux — c'est juste la liste des fichiers)
  4. Re-construit le sitemap-news si activé
  5. NE re-upload PAS les XSL (ils changent rarement — économise 2 uploads par publication)

Les robots.txt et XSL sont uploadés uniquement par les boutons Upload stylesheets et Force regenerate.

Stylesheets XSL

Chaque sitemap émet un PI <?xml-stylesheet type="text/xsl" href="..."?> juste après la déclaration XML. Invisible aux crawlers, mais transforme le fichier en table HTML stylée quand un navigateur l'ouvre directement.

Les labels XSL (« URL », « Last modified », « Priority », etc.) sont localisés selon settings.language :

  • en → EN
  • fr, fr-CA, fr-FR → FR
  • de, de-AT, de-CH → DE
  • etc.

Anything non-matché tombe sur EN.

Migration root → /sitemaps/

Un version précédente uploadait les sitemaps à la racine du site (/sitemap-2026.xml etc.). Les versions actuelles utilisent /sitemaps/ pour rangement.

À chaque Force regenerate (ou tous les Upload stylesheets), le plugin fait un sweep idempotent des anciens paths racine :

  • deleteFile("sitemap-2026.xml") etc. (404 silencieux)
  • Si l'ancien fichier existait, il est supprimé ; sinon noop

Donc les déploiements upgradés depuis une version pre-/sitemaps/ voient leurs orphans cleanup automatiquement.

Désactivation

Désactiver le plugin ne supprime PAS les sitemaps existants sur Flexweg. Ils restent en ligne jusqu'à ce que vous les supprimiez manuellement via le file manager Flexweg.

Pour une désactivation propre : utilisez le bouton Force regenerate avec le News toggle off ET le contenu types vide (résulte en sitemaps vides), puis désactivez.