samdark / sitemap

Sitemap and sitemap index builder
BSD 3-Clause "New" or "Revised" License
530 stars 87 forks source link
hacktoberfest php sitemap

Sitemap

XML Sitemap and XML Sitemap Index builder.

GitHub release (latest SemVer) GitHub Workflow Status (branch) Packagist PHP Version Support Packagist Downloads Packagist Downloads GitHub

Features

Installation

Installation via Composer is very simple:

composer require samdark/sitemap

After that, make sure your application autoloads Composer classes by including vendor/autoload.php.

How to use it

use samdark\sitemap\Sitemap;
use samdark\sitemap\Index;

// create sitemap
$sitemap = new Sitemap(__DIR__ . '/sitemap.xml');

// add some URLs
$sitemap->addItem('http://example.com/mylink1');
$sitemap->addItem('http://example.com/mylink2', time());
$sitemap->addItem('http://example.com/mylink3', time(), Sitemap::HOURLY);
$sitemap->addItem('http://example.com/mylink4', time(), Sitemap::DAILY, 0.3);

// set sitemap stylesheet (see example-sitemap-stylesheet.xsl)
$sitemap->setStylesheet('http://example.com/css/sitemap.xsl');

// write it
$sitemap->write();

// get URLs of sitemaps written
$sitemapFileUrls = $sitemap->getSitemapUrls('http://example.com/');

// create sitemap for static files
$staticSitemap = new Sitemap(__DIR__ . '/sitemap_static.xml');

// add some URLs
$staticSitemap->addItem('http://example.com/about');
$staticSitemap->addItem('http://example.com/tos');
$staticSitemap->addItem('http://example.com/jobs');

// set optional stylesheet (see example-sitemap-stylesheet.xsl)
$staticSitemap->setStylesheet('http://example.com/css/sitemap.xsl');

// write it
$staticSitemap->write();

// get URLs of sitemaps written
$staticSitemapUrls = $staticSitemap->getSitemapUrls('http://example.com/');

// create sitemap index file
$index = new Index(__DIR__ . '/sitemap_index.xml');

// set index stylesheet (see example in repo)
$index->setStylesheet('http://example.com/css/sitemap.xsl');

// add URLs
foreach ($sitemapFileUrls as $sitemapUrl) {
    $index->addSitemap($sitemapUrl);
}

// add more URLs
foreach ($staticSitemapUrls as $sitemapUrl) {
    $index->addSitemap($sitemapUrl);
}

// write it
$index->write();

Multi-language sitemap

use samdark\sitemap\Sitemap;

// create sitemap
// be sure to pass `true` as second parameter to specify XHTML namespace
$sitemap = new Sitemap(__DIR__ . '/sitemap_multi_language.xml', true);

// Set URL limit to fit in default limit of 50000 (default limit / number of languages) 
$sitemap->setMaxUrls(25000);

// add some URLs
$sitemap->addItem('http://example.com/mylink1');

$sitemap->addItem([
    'ru' => 'http://example.com/ru/mylink2',
    'en' => 'http://example.com/en/mylink2',
], time());

$sitemap->addItem([
    'ru' => 'http://example.com/ru/mylink3',
    'en' => 'http://example.com/en/mylink3',
], time(), Sitemap::HOURLY);

$sitemap->addItem([
    'ru' => 'http://example.com/ru/mylink4',
    'en' => 'http://example.com/en/mylink4',
], time(), Sitemap::DAILY, 0.3);

// set stylesheet (see example-sitemap-stylesheet.xsl)
$sitemap->setStylesheet('http://example.com/css/sitemap.xsl');

// write it
$sitemap->write();

Options

There are methods to configure Sitemap instance:

There is a method to configure Index instance:

Running tests

In order to run tests perform the following commands:

composer install
./vendor/bin/phpunit