A tool to generate XML sitemaps. Integrates with Symfony via SitemapBundle
composer require "thepixeldeveloper/sitemap"
Generating a typical (<urlset>) sitemap.
<?php declare(strict_types=1);
use Thepixeldeveloper\Sitemap\Urlset;
use Thepixeldeveloper\Sitemap\Url;
use Thepixeldeveloper\Sitemap\Drivers\XmlWriterDriver;
$url = new Url($loc);
$url->setLastMod($lastMod);
$url->setChangeFreq($changeFreq);
$url->setPriority($priority);
$urlset = new Urlset();
$urlSet->add($url);
$driver = new XmlWriterDriver();
$urlset->accept($driver);
echo $driver->getOutput();
Generating a parent (<sitemapindex>) sitemap.
<?php declare(strict_types=1);
use Thepixeldeveloper\Sitemap\SitemapIndex;
use Thepixeldeveloper\Sitemap\Sitemap;
use Thepixeldeveloper\Sitemap\Drivers\XmlWriterDriver;
// Sitemap entry.
$url = new Sitemap($loc);
$url->setLastMod($lastMod);
// Add it to a collection.
$urlset = new SitemapIndex();
$urlSet->add($url);
$driver = new XmlWriterDriver();
$urlset->accept($driver);
echo $driver->output();
The following extensions are supported: Image, Link, Mobile, News and Video. They work in the following way (taking image as an example):
<?php declare(strict_types=1);
use Thepixeldeveloper\Sitemap\Urlset;
use Thepixeldeveloper\Sitemap\Url;
use Thepixeldeveloper\Sitemap\Extensions\Image;
$url = new Url($loc);
$url->setLastMod($lastMod);
$url->setChangeFreq($changeFreq);
$url->setPriority($priority);
$image = new Image('https://image-location.com');
$url->addExtension($image);
...
Processing Instructions
You can add processing instructions on the output as such.
<?php declare(strict_types=1);
use Thepixeldeveloper\Sitemap\Drivers\XmlWriterDriver;
$driver = new XmlWriterDriver();
$driver->addProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="/path/to/xslt/main-sitemap.xsl"');
Which will add before the document starts.
<?xml-stylesheet type="text/xsl" href="/path/to/xslt/main-sitemap.xsl"?>