PHP ile sitemap (site haritası) oluşturmak için yazdığım Sitemapbuilder sınıfı

PHP ile sitemap yani siteharitaları oluşturmak için yazdığım Sitemapbuilder sınıfını sizinle paylaşmak istiyorum. Biliyorsunuz ki büyük sitelerin site haritalarını oluşturmak zahmetli bir iş. Bunun için script kullanmak daha verimli.

Bir site haritasının belirlenen bir takım şema kuralları vardır. Bu kurallara uyarak sitemap oluşturmak durumundayız. Kurallara uyarak yazdığım Sitemapbuilder sınıfını indirmek içim PHP-sitemap-script linkine tıklayabilirsiniz.

Sitemapbuilder sınıfını kullanmak basit. Önce Sitemapbuilder PHP scriptini sayfaya dahil ediyoruz ve ekleyeceğimiz URL'leri ISO-8859-1 ile kodlayarak URL'leri giriyoruz.

PHP ile sitemap oluşturacağımız kod parçası:

// site map haritasını oluşturacak Sitemapbuilder classını sayfaya dahil ediyoruz.
require_once('Sitemapbuilder.class.php');
// URL'leri ISO değerine dönüştürecek fonksiyon
function url_to_iso($url="")
{
	$character = array("&", "'","\"", "<",">"," ","ğ","Ğ","ı","İ","ş","Ş","ç","Ç","ö","Ö","ü","Ü");
	$escape   = array("%26", "%27", "%22","%3C","%3E","%20","%F0","%D0","%FD","%DD","%FE","%DE",
	            "%E7","%C7","%F6","%D6","%FC","%DC");
	return  str_replace($character,$escape,$url);
}

// Sitemapbuilder classını yaratıyoruz
$sm= new Sitemapbuilder();

// Eğer veriler veritabanında saklanıyorsa URL'ler  veritabanından okunmalı
// ya da oluşturulmalı ardından döngüye sokularak add_url fonksiyonu kullanılmalı.
// Bu örnekte URL'leri elle gireceğiz.

// url adreslerinin başında http:// olmak zorunda,
// ayrıca domain adıyla url adresinin aynı olmasına dikkat etmek gereiyor.
// url adreslerini teker teker giriyoruz.

// Türkçe karakterler veya "<" , "'" , "&" ve boşluk (" ") gibi özel karakterler içeriyorsa
// url_to_iso fonksiyonunu kullanmak gerekir. Kuralar için http://www.sitemaps.org/tr/protocol.php
// sayfasını inceleyebilirsiniz. 
$sm->add_url("http://www.zskblog.com/");
// sayfa eklenme tarihiyle birlikte url girmek için
$sm->add_url(url_to_iso ( "http://www.zskblog.com/detay.aspx?id=31&type=some",date("Y-m-d")));
// sayfa eklenme tarihi ve saatiyle birlikte url girmek için
$sm->add_url("http://www.zskblog.com/detay.aspx?id=35",date("Y-m-d")."T".date("H:m:sP"));
// türkçe karakter içeren bir url kullanılabilinir.
$sm->add_url(url_to_iso ("http://www.zskblog.com/türkçe karakterlerde olabilir url adresinde/"));
// url'yi isteğe bağlı elamnlarla birlikte girebiliriz. mesela günlük değiştiğini gösteren daily değeri
$sm->add_url("http://www.zskblog.com/kategori/ajax","","daily");
$sm->add_url("http://www.zskblog.com/","","","0.6");

// istemciye site haritamızı yolluyoruz.
header("Content-Type: text/xml; charset='utf-8'  ");
echo $sm->get_sitemap();
Site haritasını online http://www.automapit.com/sitemapvalidator.html linkinden test ettiğimde site haritam doğrulandı :

site haritası doğrulama

Google webmasters sitemaps sayfasında google'a yolladığım site haritasında da sorun çıkmadı:

site haritası doğrulama google

PHP ile site haritası bu örnekteki gibi oluşturabiliriz. Site haritası oluşturma kurallarını incelemek için www.sitemaps.org/tr/protocol.php sitesine göz atmanızı öneririm.
yazan Zülküf Küçüközer tarih   3rd September 2009
primary key words  Php | Sitemap | Site haritası | Sınıf okunma  11063
secondary key words  Url
writing alican writing 7th March 2011
Çok güzel bir anlatım, çok güzel bir script, çok güzel bir site. Çok teşekkürler.
writing Ali Arslan writing 14th August 2011
Bu ekrana bastığımız site haritasını dosya olarak nasıl kayıt edebiliriz.Yardımcı olursanız sevinirim.
writing yusuf writing 2nd February 2013
Hocam Merhaba video sitem var site haritası düzgün çalışmıyor yardımcı olabilirmisiniz.