-
Notifications
You must be signed in to change notification settings - Fork 0
Sitemap
La classe Sitemap permet de générer des fichiers XML conformes au protocole Sitemap 0.9. Elle supporte les fichiers d'index, les listes d'URLs standards et l'extension Google Image. Elle est optimisée pour générer de gros volumes de données sans saturer la mémoire vive (RAM).
Namespace : Magepattern\Component\XML\Sitemap
| Méthode | Paramètres | Retour | Description |
|---|---|---|---|
| init() | string $uri, bool $isIndex | bool | Initialise le fichier (crée les dossiers si besoin) et écrit l'entête. |
| addUrl() | string $loc, $lastMod, $freq, $prio, $imgs | self | Ajoute une URL de page avec ses métadonnées et images. |
| addSitemap() | string $loc, $lastMod | self | Ajoute un lien vers un autre sitemap (Mode Index uniquement). |
| save() | - | bool | Ferme les balises XML et finalise l'écriture sur le disque. |
Utilisation : Flux Standard Le flux de travail est toujours le même : Init -> Add -> Save.
- Générer un sitemap d'URLs (Pages)
use Magepattern\Component\XML\Sitemap;
$sitemap = new Sitemap();
// Initialisation d'un fichier standard
if ($sitemap->init('public/sitemap_produits.xml')) {
// Ajout d'une URL simple
$sitemap->addUrl('https://monsite.com/produit-1', 'now', 'daily', 0.8);
// Ajout d'une URL avec image Google
$sitemap->addUrl('https://monsite.com/produit-2', '2026-01-10', 'weekly', 0.6, [
['loc' => 'https://monsite.com/img/p2.jpg', 'caption' => 'Belle photo']
]);
$sitemap->save();
}- Générer un Index (Sitemap de Sitemaps) Si vous avez beaucoup d'URLs, vous devez créer un fichier index qui liste vos sous-sitemaps.
$index = new Sitemap();
// Le 2ème paramètre 'true' active le mode INDEX
if ($index->init('public/sitemap_index.xml', true)) {
$index->addSitemap('https://monsite.com/sitemap_produits.xml', 'now');
$index->addSitemap('https://monsite.com/sitemap_blog.xml', 'yesterday');
$index->save();
}$sitemap = new \Magepattern\Component\XML\Sitemap();
// --- GÉNÉRATION DU SITEMAP IMAGES ---
$sitemap->init('public/sitemap_images.xml');
$sitemap->addUrl('https://site.com/galerie', 'now', 'daily', 0.5, [
['loc' => 'https://site.com/img/photo1.jpg', 'caption' => 'Vacances'],
['loc' => 'https://site.com/img/photo2.jpg', 'caption' => 'Plage']
]);
$sitemap->save();
// --- GÉNÉRATION DU SITEMAP PAGES ---
$sitemap->init('public/sitemap_pages.xml');
$sitemap->addUrl('https://site.com/contact', 'monthly', 'monthly', 0.3);
$sitemap->addUrl('https://site.com/a-propos', 'yearly', 'yearly', 0.1);
$sitemap->save();
// --- GÉNÉRATION DE L'INDEX (LE MAÎTRE) ---
$sitemap->init('public/sitemap_index.xml', true);
$sitemap->addSitemap('https://site.com/sitemap_pages.xml', 'now');
$sitemap->addSitemap('https://site.com/sitemap_images.xml', 'now');
$sitemap->save();Mémoire : En héritant de XMLWriter, le fichier est écrit au fur et à mesure sur le disque. Vous pouvez générer des fichiers de plusieurs Mo sans dépasser le memory_limit de PHP.
Validation : Les URLs sont validées via StringTool et les dates sont formatées automatiquement au standard W3C via DateTool.
CDData : Les légendes d'images (captions) sont protégées par des balises CDATA pour éviter que des caractères spéciaux (comme & ou <) ne corrompent le fichier XML.