Codeigniter Xml Sitemap Kütühanesi

Codeigniter Xml Sitemap Kütühanesi Codeigniter'da xml ve xml.gz uzantılı site haritaları oluşturmak için yazdığım Xml_sitemap kütühanesi.

Codeigniter ile yaptığım projelerde xml site haritası oluşturmak için yazdığım Xml_sitemap kütüphanesi. Çalışma mantığını şu şekilde; Site haritasına eklemek istediğimiz adresleri, oluşturulma tarihlerini, güncellenme tarihlerini ve yorum sayılarını çoklu dizi halinde kütüphaneye gönderiyoruz. Site haritasını oluşturmak istediğimiz zaman generate metodunu çağırıyoruz. Bu metod site haritasına eklediğimiz adresleri yorum sayıları ile oluşturulma ve güncellenme tarihlerine göre öncelik (priority) değerlerini hesaplayıp tarihe göre sıraladıktan sonra kaydediyor. Kaydettikten sonra ise belirlediğimiz arama motoru adreslerine site haritasının güncellendiğini haber vermek için ping atıyor ve gelen cevapları bir dizi halinde döndürüyor.

Kurulumu

Xml_sitemap.php dosyasını application/libraries klasörüne atın.

Codeigniter ana dizininde sitemap.xml ve sitemap.xml.gz isimli 2 dosya aoluşturun. Gerekirse bu dosyalara yazma izni verin (Chmod değerini 777 yapın).

Kullanımı

Birden fazla yerde bu kütüphaneyi kullanacaksanız bir helper fonksiyonu yazmak en mantıklı çözüm olur (Ben bu şekilde kullanıyorum). Site haritasını en basit haliyle oluşturacak olursak;


//Site haritasına ekleyeceğimiz sayfaları bir dizi olarak oluşturuyoruz.
$page_array = array(
    array(
        'slug' => 'sayfa1', //Sayfa url'si
        'created_on' => '123456789',//Oluşturulma tarihi
        'updated_on' => '123456789',//Güncelleme tarihi (Zorunlu değil)
        'comment' => '10'//Yorum sayısı (Zorunlu değil)
    ),
    array(
        'slug' => 'sayfa2',
        'created_on' => '123456789',
        'updated_on' => '123456789',
        'comment' => '8'
    ),
);
//Adresleri kütüphaneye ekliyoruz.
$ci->xml_sitemap->add($page_array);
//Son olarak site haritasını oluşturarak arama motorlarından dönen ping sonuçlarını $response değişkenine aktarıyoruz.
$response = $ci->xml_sitemap->generate();

Site haritasına bir öğe eklemek için oluşturmamız gereken dizinin elemanlarını inceleyecek olursak;

  • slug : Eklemek istediğimiz adres
  • created_on : Ekleyeceğimiz adresin oluşturulma tarihi
  • updated_on : Ekleyeceğimiz adresin güncellenme tarihi. Bu alan zorunlu değil, dilerseniz kullanmayabilirsiniz.
  • comment : Adresteki sayfaya yapılan yorum sayısı. Bu alanda zorunlu değil, priority hesaplaması için kullanılıyor. Yani yorum sayısı ne kadar fazla olursa sayfa önceliği de ona göre artıyor.

Tabi yukarıdaki örnekteki gibi tek tek ekleme yapmayız herhalde smile Yukarıda da bahsetmiştim. Veritabanından kayıtları çekip site haritasını oluşturan bir helper fonksiyonu yazacak olursak;

function generate_sitemap()
{
    $ci = & get_instance();
    //Kütühanemizi ve gerekli model dosyalarımızı yüklüyoruz.
    $ci->load->library('xml_sitemap');

    $ci->load->model(array(
        'article_model',
        'page_model',
    ));

    //article_model isimli modelimizden makaleleri dizi olarak alıyoruz.
    $articles = $ci->article_model->get_articles_for_sitemap();
    //Eğer model dosyasından verileri uygun bir şekilde alırsanız aşağıdaki gibi
    //ikinci bir dizi oluşturup düzenleme yapmanıza gerek yok
    //Fakat burada makale url adresini düzenlemek için bu işlemi yapmak zorundayız.
    $article_array = array();
    foreach ($articles as $article)
    {
        $article['slug'] = 'article/' . $article['slug'];
        $article_array[] = $article;
    }
    //Düzenlediğimiz diziyi add metodunu kullanarak kütüphaneye ekliyoruz.
    $ci->xml_sitemap->add($article_array);

    //page_model isimli modelimizden sayfaları dizi olarak alıyoruz ve url adresini düzenliyoruz.
    $page_array = array();
    $pages = $ci->page_model->get_pages_for_sitemap();
    foreach ($pages as $page)
    {
        $page['slug'] = 'page/' . $page['slug'];
        $page_array[] = $page;
    }
    $ci->xml_sitemap->add($page_array);

    //Son olarak site haritasını oluşturarak arama motorlarından dönen ping sonuçlarını döndürüyoruz.
    return $ci->xml_sitemap->generate();
}

Gerek yukarıdaki örneklerde, gerekse kütüphane içerisinde kod aralarına açıklayıcı yorumlar yazdım. Daha fazla anlatmama gerek yok herhalde smile Kafanıza takılan noktalar varsa sorabilirsiniz.

Kütüphaneyi İndir

Bu yazı en son 18 Şubat 2011 tarihinde düzenlenmiştir ve güncelliğini yitirmiş olabilir.

blog comments powered by Disqus

© Mustafa Navruz 2011 0.0335 sn.

^ Başa Dön