• Stars
    star
    300
  • Rank 138,437 (Top 3 %)
  • Language
    PHP
  • License
    MIT License
  • Created over 13 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Library for generating Google sitemap XML files

For the 90's people, i'm keeping this repository as 5.2 compatible. If you need PSR-0 and Composer compatible version, here is a fork that maintained by Evert Pot.

What is sitemap-php ?

Fast and lightweight class for generating Google sitemap XML files and index of sitemap files. Written on PHP and uses XMLWriter extension (wrapper for libxml xmlWriter API) for creating XML files. XMLWriter extension is enabled by default in PHP 5 >= 5.1.2. If you having more than 50000 url, it splits items to seperated files. (In benchmarks, 1.000.000 url was generating in 8 seconds)

How to use

Include Sitemap.php file to your PHP document and call Sitemap class with your base domain.

include 'Sitemap.php';
$sitemap = new Sitemap('http://example.com');	

Now, we need to define path for saving XML files. This can be relative like xmls or absolute /path/to/your/folder and must be a writable folder. In default it uses same folder with your script.

$sitemap->setPath('xmls/');

Generated XML file names defaulted to sitemap-*.xml, you can customize prefix of filenames with setFilename method.

$sitemap->setFilename('customsitemap');

We'll add sitemap url's with addItem method. In this method, only first parameter (location) is required.

$sitemap->addItem('/', '1.0', 'daily', 'Today');
$sitemap->addItem('/about', '0.8', 'monthly', 'Jun 25');
$sitemap->addItem('/contact', '0.6', 'yearly', '14-12-2009');
$sitemap->addItem('/otherpage');

w/ method chaining.

$sitemap->addItem('/projects', '0.8')->addItem('/somepage')->addItem('/hiddenpage', '0.4', 'yearly', '01-01-2011')->addItem('/rss');

from a sql result, or whatever.

$query = Doctrine_Query::create()
				->select('p.created_at, p.slug')
				->from('Posts p')
				->orderBy('p.id DESC')
				->useResultCache(true);
$posts =  $query->fetchArray(array(), Doctrine_Core::HYDRATE_ARRAY);
foreach ($posts as $post) {
    $sitemap->addItem('/post/' . $post['slug'], '0.6', 'weekly', $post['created_at']);
}

If you need to change domain for sitemap instance, you can override it via setDomain method.

$sitemap->setDomain('http://blog.example.com');

Finally we create index for sitemap files. This method also closes tags of latest generated xml file.

$sitemap->createSitemapIndex('http://example.com/sitemap/', 'Today');

When you run your script, it generates and saves XML files to given path.

sitemap-0.xml

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <url>
  <loc>http://example.com/</loc>
  <priority>1.0</priority>
  <changefreq>daily</changefreq>
  <lastmod>2011-04-07</lastmod>
 </url>
 <url>
  <loc>http://example.com/about</loc>
  <priority>0.8</priority>
  <changefreq>monthly</changefreq>
  <lastmod>2011-06-25</lastmod>
 </url>
 <url>
  <loc>http://example.com/contact</loc>
  <priority>0.6</priority>
  <changefreq>yearly</changefreq>
  <lastmod>2009-12-14</lastmod>
 </url>
 <url>
  <loc>http://example.com/otherpage</loc>
  <priority>0.5</priority>
 </url>
</urlset>

sitemap-index.xml

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <sitemap>
  <loc>http://example.com/sitemap/sitemap-0.xml</loc>
  <lastmod>2011-04-07</lastmod>
 </sitemap>
</sitemapindex>

You need to submit sitemap-index.xml to Google Sitemaps.

Please note that, generating sitemaps not overrides any previous generated sitemap file. You need to delete old files before the operation.

$ rm -rv sitemap-*

For the truncating a file with php, use the following snippet:

$handle = fopen("/path/to/sitemap/file.xml", "w");
fclose($handle);

More Repositories

1

simmetrica

Lightweight framework for collecting and aggregating event metrics as timeseries data
Python
530
star
2

yurtdisinda-calismak-wiki

Source of the website
HTML
90
star
3

crypt-php

Library for encrypting and decrypting data with symmetric encryption
PHP
65
star
4

gaia

Successor of simmetrica - written in Dropwizard framework
Java
20
star
5

rest-api-test-example

Testing REST API's with Guzzle (3|4) and PHPUnit
PHP
17
star
6

redis-info

Web-based interface for monitoring redis servers
PHP
14
star
7

symfony-build-deploy

Notes for creating builds and deployment for Symfony2 projects
13
star
8

spring-boot-google-cloud-datastore-sample

Java
12
star
9

EasyRestBundle

Easy to use Symfony bundle for restful applications
PHP
9
star
10

istanbus-web-frontend

Web frontend for @mpaltun's istanbus project
JavaScript
8
star
11

heatbeat

Time-series data logging/graphing framework top of RRDTool
PHP
7
star
12

zend-twig

Zend_View compatible Twig integration for Zend Framework 1
PHP
7
star
13

system-tray-load-app

Java
5
star
14

dotfiles

My configuration files for vim, bash and git
Shell
5
star
15

metricd

Java
4
star
16

symfony-tr-sphinx-theme

Sphinx theme used in symfony-tr.com
Python
3
star
17

apc-stats

UNMAINTAINED! - Web script that shows information about Alternative PHP Cache
PHP
3
star
18

where-am-i-connect-iq

3
star
19

putio

PHP library for Putio API
PHP
2
star
20

Doctrine2.tmbundle

Textmate bundle for creating entities with annotations for Doctrine 2
2
star
21

seven

Web-based interface for browsing subversion repositories
PHP
2
star
22

metric-collector

Library for collecting local and remote system performance statistics
PHP
2
star
23

riemann-curl

Utility for submitting informational curl metrics to Riemann
Ruby
2
star
24

serverinfo-old

Web-based script that shows various information about your server, no longer maintained
PHP
2
star
25

gocarbon-gostatsd-grafana-docker

docker-compose setup for running go-carbon, gostatsd and grafana
2
star
26

symfony-tr-assets

Assets that used in symfony-tr.com
JavaScript
2
star
27

mr-challenge

PHP
1
star
28

rest-diff

Restful API exposes diff functionality of google-diff-patch-match
Java
1
star
29

studio-setup

Online documentation of my DAW-less (no-computer) setup
1
star
30

spring-test

A very simple HATEOAS REST API example with Spring boot
Java
1
star