... Sitemap generator class ...



• Sitemap generator class »»


This php class will help you generate a sitemap for your website automatically.

// sitemap generator class
class Sitemap{  // constructor receives the list of URLs to include in the sitemap

  function Sitemap($items = array()){

  $this->_items = $items;

  } // add a new sitemap item

  function addItem($url, $lastmod = ”, $changefreq = ”, $priority = ”, $additional_fields = array()){

  $this->_items[] = array_merge(array(‘loc’ => $url, ‘lastmod’ => $lastmod,‘changefreq’ => $changefreq,‘priority’ => $priority), $additional_fields);

  }

// get Google sitemap

  function getGoogle(){

  ob_start();

  header(‘Content-type: text/xml’);

  echo ‘<!–l version="1.0" encoding="UTF-8–>’;

  echo ‘<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"></urlset>’;

  foreach ($this->_items as $i){

  echo ‘<url></url>’;

  foreach ($i as $index => $_i){

  if (!$_i) continue;

  echo "<$index>" . $this->_escapeXML($_i) . "";

  }

  echo ”;

  }

  echo ”;

  return ob_get_clean();

  }

// get Yahoo sitemap

 function getYahoo(){

  ob_start();

  header(‘Content-type: text/plain’);

  foreach ($this->_items as $i){

  echo $i[‘loc’] . "n";

  }

  return ob_get_clean();

 }

// escape string characters for inclusion in XML structure

 function _escapeXML($str){

  $translation = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);

  foreach ($translation as $key => $value){

  $translation[$key] = ‘&amp;#’ . ord($key) . ‘;’;

  }

  $translation[chr(38)] = ‘&amp;’;

  return preg_replace("/&amp;(?![A-Za-z]{0,4}w{2,3};|#[0-9]{2,3};)/","&amp;" , strtr($str, $translation));

 }

}

Usage:

$s = new Sitemap(); 
$s->addItem("http://www.websiteurl.com", date("Y-m-d"), ‘weekly’, ‘1.0′);

 $s->addItem("http://www.websiteurl.com/link2", date("Y-m-d"), ‘weekly’, ‘1.0′);

 $s->addItem("http://www.websiteurl.com/link3", date("Y-m-d"), ‘weekly’, ‘1.0′);

This class can create two type of sitemaps for you - XML for Google and TEXT for Yahoo

if(isset($_GET[‘target’])){

  if(($target = $_GET[‘target’]) == ‘google’){

  echo $s->getGoogle();//xml sitemap

  }elseif($target == ‘yahoo’){

  echo $s->getYahoo();//txt sitemap

  }

}

This class wasn’t designed by me but by Jaimie Sirovich & Cristian Darie and the reason I put it up here is to help others that are trying to get this done without the headache of creating a new code.

 Bookmark with:            
Source: web-design-ireland | pub: 21 Feb 2008 by: Louie Eire Web Design | added: 26 Feb 2008 | cat: PHP | views: 108 time/s
Related Articles...
Leave a Comment...
Name: *
Email: *
Comment: *
Security Code: security code
*
     Remember me:
Categories
Channels
Press Release