Skip to content
Gérits Aurélien edited this page Feb 13, 2026 · 2 revisions

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

Liste des méthodes

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.

  1. 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();
}
  1. 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();
}

Exemple avec les fichiers séparés :

$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();

Sécurité & Performance

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.

Clone this wiki locally