Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Sitemap Generator

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.

You can’t perform that action at this time.