Need help with sitemap?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

samdark
473 Stars 73 Forks BSD 3-Clause "New" or "Revised" License 46 Commits 7 Opened issues

Description

Sitemap and sitemap index builder

Services available

!
?

Need anything else?

Contributors list

# 2,124
PHP
Yii Fra...
phpstor...
yii2
26 commits
# 129,890
sitemap
spinner
Bootstr...
bootstr...
3 commits
# 15,044
Bootstr...
Sass
dashboa...
Jekyll
3 commits
# 157,332
PHP
symfony...
Symfony
CSS
2 commits
# 214,956
Shell
fluent-...
C
CSS
1 commit
# 483,042
PHP
sitemap
1 commit
# 91,057
PHP
CSS
gcm
apns
1 commit
# 463,928
PHP
Symfony
ckedito...
sitemap
1 commit
# 418,025
Rails
Shell
Postgre...
jsonb
1 commit
# 486,206
PHP
sitemap
1 commit
# 50,185
PHP
Go
Gin
datavis...
1 commit
# 281,341
Markdow...
Vue.js
vuejs
Neovim
1 commit

Sitemap

Sitemap and sitemap index builder.

Features

  • Create sitemap files: either regular or gzipped.
  • Create multi-language sitemap files.
  • Create sitemap index files.
  • Automatically creates new file if either URL limit or file size limit is reached.
  • Fast and memory efficient.

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

// 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');

// 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');

// 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);

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

Options

There are methods to configure

Sitemap
instance:
  • setMaxUrls($number)
    . Sets maximum number of URLs to write in a single file. Default is 50000 which is the limit according to specification and most of existing implementations.
  • setMaxBytes($number)
    . Sets maximum size of a single site map file. Default is 10MiB which should be compatible with most current search engines.
  • setBufferSize($number)
    . Sets number of URLs to be kept in memory before writing it to file. Default is 10. Bigger values give marginal benefits. On the other hand when the file size limit is hit, the complete buffer must be written to the next file.
  • setUseIndent($bool)
    . Sets if XML should be indented. Default is true.
  • setUseGzip($bool)
    . Sets whether the resulting sitemap files will be gzipped or not. Default is
    false
    .
    zlib
    extension must be enabled to use this feature.

There is a method to configure

Index
instance:
  • setUseGzip($bool)
    . Sets whether the resulting index file will be gzipped or not. Default is
    false
    .
    zlib
    extension must be enabled to use this feature.

Running tests

In order to run tests perform the following commands:

composer install
./vendor/bin/phpunit

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.