Git Product home page Git Product logo

sitemap-php's Introduction

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

sitemap-php's People

Contributors

mkly avatar o avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sitemap-php's Issues

Merge with https://github.com/evert/sitemap-php

PHP 5.2โ€™s end of life date was announced on January 6, 2011

But the lib's usecase is pretty up2date. Just see the stars and
forks that have been created.

It would be awesome to remove the ugly repository split.

Resolved : Create Sortable Sitemap File With Xss Stylesheet Template

This update provide sitemap sort property and send sitemap to Google and Bing crawlers

Screenshot :
aklisahane_sitemap_xss

Demo : http://www.aklisahane.com/sitemap.xml

Just Change your library file in this file in attachment : sitemap_lib.php.txt and rename to sitemap_lib.php.
sitemap_lib.php.txt

Usage :

`<?php
require_once("www_includes/func/sql.php"); // call database connection file
require_once("www_includes/func/func_inc.php"); // call your functions file
require_once 'sitemap_lib.php'; // call sitemap_lib.php file

$handle = fopen("../sitemap.xml", "w"); fclose($handle); // delete current sitemap file
$sitemap = new Sitemap('http://www.yoursite.com');
$sitemap->setPath('../');
$sitemap->setFilename('sitemap');

$query = mysqli_query($bag, 'Select * from blog_posts order by post_id desc ');

while ($post = mysql_fetch_array($query)) {
$sitemap->addItem('/blog/'.$post['id'].'-'.sefyap($post['adi']).'/' , '0.4', 'daily', $post["tarih"]);
}

$sitemap->setDomain('http://aklisahane.com/');
$sitemap->createSitemapIndex('http://www.yoursite.com/', 'Today');

$sitemaps = array("http://yourwebsite.com/sitemap.xml");

//This codes for sent sitemap file to Google And Bing Crawler Services

function Submit($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $httpCode;
}
function SubmitSiteMap($url) {
$returnCode = Submit($url);
if ($returnCode != 200) {
echo "Error $returnCode: $url
";
} else {
echo "Submitted $returnCode: $url
";
}
}

foreach ($sitemaps as $sitemapUrl) {
$sitemapUrl = htmlentities($sitemapUrl);

//Google
$url = "http://www.google.com/webmasters/sitemaps/ping?sitemap=".$sitemapUrl;
SubmitSiteMap($url);

//Bing / MSN
$url = "http://www.bing.com/webmaster/ping.aspx?siteMap=".$sitemapUrl;
SubmitSiteMap($url);

// Live
$url = "http://www.bing.com/webmaster/ping.aspx?siteMap=".$sitemapUrl;
SubmitSiteMap($url);

// moreover
$url = "http://api.moreover.com/ping?sitemap=".$sitemapUrl;
SubmitSiteMap($url);
}

?>`

Sitemap Child Element

Hi Guys,

i have issue with create child element,
Basically am trying to include product image in the sitemap. but i could not see the option for create child elements.

Anybody can you help me ??

image:image
image:lochttp://example.com/image.jpg</image:loc>
image:titleImage</image:title>
</image:image>

What version to use?

Great job.
Please, which version should I use? From your git download or from one fork's? (sorry but my english is not soo good).
Thank you.

Image Sitemap

Will it be possible to make image sitemaps using this?

instructions without composer

Hi,
Can we have the instruction for installation and use without composer ?

for exemple : without composer, we don"t have : "use XMLWriter;".
Thanks for,
Best regards.

Gzip Compression

Hi,

Can you add features for Gzip compression for reduce the space??

error

Hello,

I download this sitemap.php, upload in my public folder, when i run sitemap.php nothing happend,
in error_log file i see this error

PHP Parse error: syntax error, unexpected '=', expecting function (T_FUNCTION) in /home/domain/public_html/Sitemap.php on line 23

How i can fix this ?

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.