This package helps you to very easily generate a sitemap for your website

0.4.0 2019-11-21 14:42 UTC

This package is auto-updated.

Last update: 2020-12-21 17:41:41 UTC


Build status StyleCI Status Code coverage Total Downloads Latest Stable Version License

This package helps you to very easily generate a sitemap for your website.


You can include this package through Composer using:

composer require roelofjan-elsinga/sitemap-generator


use SitemapGenerator\SitemapGenerator;

$generator = new SitemapGenerator();


$xml_string = (string)$generator;
// OR
$xml_string = $generator->toXML();

print $xml_string;

If you don't want to provide the domain name every single time, you can do any of the following steps:

$generator = new SitemapGenerator('');

// or

$generator = new SitemapGenerator();


// or

$generator = SiteMapGenerator::boot('');

Now that you have set the domain name, you can simply do this:


This will result in:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="">

Available methods:

  • boot(): This provides a named constructor for the SitemapGenerator class
  • remove(string $url): This will remove the given URL from the sitemap
  • links(): This will given you the added URL's as an array

No duplication

The add() method will filter out any duplicate links, so adding a link twice will not result in an additional link in the sitemap.


You can customize the priority, lastmod, and changefreq values by providing the add() method with additional information:

public function add(
    string $url, 
    $priority = 1, 
    string $last_modified = null, 
    string $change_frequency = 'weekly'
): SitemapGenerator

This means you can do something like this:

$generator->add('', 0.9, date('Y-m-d'), 'monthly');

// Or if you've set the domain earlier, this is even simpler:

$generator = SitemapGenerator::boot()->setDomain('');

$generator->add('/blog', 0.9, date('Y-m-d'), 'monthly');

Valid values

priority: A number between 0 and 1, 1 being the most important page, 0 being the least important.

last_modified: any date in the "Y-m-d" format

change_frequency: yearly, monthly, weekly, daily, etc.