Warning: Undefined array key "skin" in /home/nizo0755/beamreactor.com/lib/functions.lib.php on line 194
Beamreactor · Le dernier CMS français indépendant: reprenez le contrôle!
En vous promenant sur Beamreactor, nous stockons votre IP 48h pour des raisons de sécurité.

Lecteur Markdown

sitemap Documentation › SITEMAP_DOCUMENTATION

SITEMAP_DOCUMENTATION

Sitemap Generator - Résumé du refactoring #

Avantages principaux #

1. Architecture MVC-like

- Classe `SitemapGenerator` pour la logique

- Controller `sitemap.php` pour l'interface

- Configs JSON par plugin (séparation données/code)

2. Sécurité renforcée

- Prepared statements implicites via mysqli

- Validation des données

- Protection contre les injections

3. Modularité

- Chaque plugin définit ses propres URLs

- Format JSON standard et extensible

- Facile d'activer/désactiver des plugins

4. Standards Google

- XML conforme Sitemap Protocol 0.9

- Support Google Images (galeries)

- lastmod, changefreq, priority

5. Interface moderne

- Admin panel avec listing des plugins

- Génération en un clic

- Sauvegarde directe en sitemap.xml

- Styles CSS variables (AEGIS theme)

📦 Fichiers livrés #

Core files #

  • SitemapGenerator.class.php - Classe principale (10KB)
  • sitemap.php - Controller plugin (5.7KB)
  • sitemap.fr.inc.php - Locale française (1.9KB)
  • SITEMAP_INSTALLATION.md - Guide complet (7.5KB)

Example configs (JSON) #

  • content.sitemap.json - Pages content
  • gallery.sitemap.json - Galeries avec images
  • forums.sitemap.json - Forums
  • products.sitemap.json - Produits
  • blogs.sitemap.json - Articles blog

📂 Structure d'installation #

/plugins/sitemap/
├── sitemap.php
├── /lib/
│   └── SitemapGenerator.class.php
└── /locale/
	└── sitemap.fr.inc.php

/plugins/content/conf/
└── content.sitemap.json

/plugins/gallery/conf/
└── gallery.sitemap.json

/plugins/forums/conf/
└── forums.sitemap.json

... etc pour chaque plugin

🔧 Configuration JSON - Format #

Structure de base #

{
  "enabled": true,
  "priority": 0.8,
  "changefreq": "weekly",
  "sources": [
	{ /* source config */ }
  ],
  "notes": "Description optionnelle"
}

Types de sources supportés #

1. Database (BDD) #

{
  "type": "database",
  "table": "nom_table",
  "column_id": "id",		   // OU column_slug
  "column_language": "language", // Optionnel
  "column_date": "date",		// Optionnel (lastmod)
  "column_moddate": "moddate",  // Optionnel (prioritaire)
  "url_pattern": "/page.php?id=%s",
  "where": "published = 1"	  // Optionnel
}

Multi-paramètres:

{
  "url_pattern": "/page.php?lang=%s&id=%s",
  "url_params": ["language", "id"]
}

2. Folder (Filesystem) #

Sous-dossiers:

{
  "type": "folder",
  "path": "user/gallery/",
  "scan_type": "subfolders",
  "url_pattern": "/gallery.php?Path=%s"
}

Fichiers:

{
  "type": "folder",
  "path": "documents/",
  "scan_type": "files",
  "extensions": ["pdf", "doc"],
  "url_pattern": "/doc.php?file=%s"
}

3. Static (URL unique) #

{
  "type": "static",
  "url": "/index.php?obj=edito",
  "priority": 0.8
}

4. Images (Google Images) #

{
  "images": {
	"enabled": true,
	"physical_path": "user/gallery/%s/",
	"extensions": ["jpg", "png", "gif", "webp"]
  }
}

🚀 Quick Start #

Installation rapide #

# 1. Créer structure
mkdir -p plugins/sitemap/lib plugins/sitemap/locale

# 2. Copier fichiers
cp SitemapGenerator.class.php plugins/sitemap/lib/
cp sitemap.php plugins/sitemap/
cp sitemap.fr.inc.php plugins/sitemap/locale/

# 3. Créer configs JSON pour chaque plugin
cp content.sitemap.json plugins/content/conf/
cp gallery.sitemap.json plugins/gallery/conf/
# ... etc

# 4. Tester
# Accéder à: ?obj=sitemap.php

Utilisation #

1. Admin panel: `?obj=sitemap.php`

2. Liste plugins: Automatique

3. Générer: Un clic

4. Sauvegarder: Bouton "Sauvegarder dans sitemap.xml"

5. Soumettre à Google: Via Search Console

📊 Priorités recommandées #

| Type contenu | Priority | Changefreq |

|--------------|----------|------------|

| Homepage | 1.0 | daily |

| Content | 0.9 | weekly |

| Products | 0.8 | weekly |

| Blog | 0.8 | weekly |

| Edito | 0.8 | monthly |

| Galleries | 0.6 | monthly |

| FAQ | 0.5 | monthly |

| Forums | 0.2 | weekly |

🎨 Features principales #

Multi-langue #

Support natif des sites multilingues via `url_params`:

{
  "url_pattern": "/page.php?lang=%s&id=%s",
  "url_params": ["language", "id"]
}

Google Images #

Balises `<image:image>` automatiques pour galeries:

<url>
  <loc>https://site.com/gallery.php?Path=Photos</loc>
  <image:image>
	<image:loc>https://site.com/user/gallery/Photos/img1.jpg</image:loc>
  </image:image>
</url>

Filtrage BDD #

Clause WHERE pour filtrer les résultats:

{
  "where": "published = 1 AND archived = 0"
}

Dates lastmod #

Utilise `column_date` ou `column_moddate` (prioritaire):

{
  "column_date": "date_creation",
  "column_moddate": "date_modification"
}

🔍 Différences avec l'ancien système #

Ancien (sitemap.php alpha) #

  • ❌ Code spaghetti dans un seul fichier
  • ❌ URLs hardcodées dans le code
  • ❌ Pas de gestion des images
  • ❌ Pas de multi-langue
  • ❌ Pas de filtrage BDD
  • ❌ lastmod fixe (2007!)

Nouveau (refactoré) #

  • ✅ Architecture MVC propre
  • ✅ Configs JSON par plugin
  • ✅ Support Google Images
  • ✅ Multi-langue natif
  • ✅ Filtrage BDD flexible
  • ✅ lastmod dynamique depuis BDD

🐛 Troubleshooting #

Plugin ne s'affiche pas #

→ Vérifie que le JSON est dans `/plugins/[nom]/conf/[nom].sitemap.json`

→ Pas juste `sitemap.json`, mais `[nom].sitemap.json`

Erreur Database query #

→ Vérifie les noms de tables/colonnes dans le JSON

→ Teste la query SQL manuellement

Images manquantes #

→ Vérifie `physical_path` pointe vers le bon dossier

→ Vérifie les extensions dans le tableau

Sitemap vide #

→ Vérifie `"enabled": true` dans les JSON

→ Vérifie les clauses WHERE si présentes

📈 Prochaines étapes suggérées #

1. Tester avec 2-3 plugins d'abord

2. Valider le XML généré (validator.w3.org)

3. Ajouter tous les plugins pertinents

4. Soumettre à Google Search Console

5. Automatiser avec cron (régénération mensuelle)

Exemple cron job #

# Régénérer sitemap tous les 1er du mois à 3h
0 3 1 * * wget -q -O - "https://site.com/admin?obj=sitemap.php&generate=1&save=1"

🎓 Points d'extension futurs #

Cache #

Ajouter un système de cache pour éviter de régénérer à chaque visite:

$cache_file = $cfg[20].'/sitemap.cache.xml';
if (file_exists($cache_file) && (time() - filemtime($cache_file) < 86400)) {
	return file_get_contents($cache_file);
}

Sitemap index #

Pour sites énormes (>50k URLs), générer plusieurs sitemaps:

<sitemapindex>
  <sitemap><loc>sitemap-content.xml</loc></sitemap>
  <sitemap><loc>sitemap-products.xml</loc></sitemap>
</sitemapindex>

Video support #

Ajouter support balises `<video:video>`:

{
  "video": {
	"enabled": true,
	"title_column": "title",
	"description_column": "description",
	"thumbnail_url_pattern": "/thumbnails/%s.jpg"
  }
}

News sitemap #

Pour actus récentes (<48h):

{
  "news": {
	"enabled": true,
	"publication_name": "BeamReactor News",
	"publication_language": "fr"
  }
}

✅ Validation #

Avant de mettre en prod:

1. Valider XML: https://www.xml-sitemaps.com/validate-xml-sitemap.html

2. Tester robots.txt: Ajouter `Sitemap: https://site.com/sitemap.xml`

3. Google Search Console: Soumettre le sitemap

4. Vérifier indexation: `site:beamreactor.com` dans Google

📝 Notes importantes #

  • Naming convention: Les JSON doivent s'appeler `[plugin].sitemap.json`, pas juste `sitemap.json`
  • Permissions: Le dossier racine doit être writable pour sauvegarder `sitemap.xml`
  • Multi-langue: Utilise `url_params` array pour les URLs avec plusieurs paramètres
  • Images: Uniquement pour galeries, pas pour tous les types de contenu
  • Priorités: Restent subjectives, ajuste selon ton contenu

🎯 Résumé exécutif #

Ce refactoring apporte:

  • Architecture moderne et maintenable
  • Configs déclaratives (JSON)
  • Support standards Google
  • Extensibilité facile
  • Interface admin intuitive

Compatible avec:

  • BeamReactor 22+ ans d'historique
  • MySQL/MariaDB
  • PHP 7.4+
  • Standards sitemap.org

Prêt pour:

  • AEGIS IA
  • Clients futurs de BeamReactor
  • Sites multilingues
  • E-commerce (produits)
  • Galeries photos
  • Blogs et forums

---

Tous les fichiers sont prêts à l'emploi - consulte `SITEMAP_INSTALLATION.md` pour le guide complet!

de en fr