Rss Beslemesi Oluşturma ve Okuma

 bcakir
 15 Nisan 2012

Merhaba arkadaşlar, bu yazımda Php ile dinamik olarak rss beslemesi yapmayı ve bir rss beslemesinden verileri okumayı anlatacağım. Rss beslemeleri temelde bir XML dosyasıdır, amaçları da girilen son yazıları belirli kurallara göre listelermektir. Bu yazıyla kolayca haber akışınızı takipçilerinize ulaştıracağınız bir besleme sayfasına kavuşacaksınız. İlk olarak, rss beslemesinin yapısını göstererek konuya başlayacağım. Daha sonra veritabınından aldığımız verilerle sürekli güncelliğini koruyan bir rss sayfası oluşturacağız. Yazımın en sonunda da, şuanda sitemde bulunan rss beslememden, güncel konuları çekmeyi göstereceğim. Yazı biraz uzun gibi gelebilir size ama konuyu tam anlamıyla kapsaması ve eksik bir bölüm kalmaması için bu yolu tercih edeceğim.

<?xml version="1.0" encoding=utf-8"?>
<rss version="2.0">
<channel>
	<title>bcakir</title>
	<atom:link href="http://bcakir.com/feed" rel="self" type="application/rss+xml"/>
	<link>http://bcakir.com</link>
	<description>Saklayıcılıktan, Paylaşımcılığa</description>
	<lastBuildDate>Fri, 13 Apr 2012 18:12:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>

		<item>
			<title>İletişim Teorileri ve Yeni Medya Düzeni</title>
			<link>http://bcakir.com/iletisim-teorileri-ve-yeni-medya-duzeni</link>
			<description><![CDATA[
			Yaptığım araştırmalar, analizler ve kendi düşündüklerim  [...
			]]></description>
			<pubDate>Fri, 13 Apr 2012 18:07:25 +0000</pubDate>
		</item>

		<item>
			<title>JQuery Nivo Slider</title>
			<link>http://bcakir.com/jquery-nivo-slider</link>
			<description><![CDATA[
			JQuery ile yapılmış nivo slider örneğinin kullanımını sizlere göstereceğim  [...]
			]]></description>
			<pubDate>Wed, 29 Feb 2012 17:55:50 +0000</pubDate>
		</item>

</channel>
</rss>

Bir rss dosyasının yapısını incelediğimizde yaklaşık olarak yapısının yukarıdaki gibi olduğunu görüyoruz. Bazı siteler <comment> gibi ilave etiketlerde ekliyorlar ama temel yapısı aşağı yukarı bu diyebilirim. Yapısını anladıktan sonra, dinamik bir rss sayfasının nasıl yapılacağını gösterebilirim.

<?php
//veritabanına bağlanma
$baglan=mysql_connect("localhost",'root','');
mysql_select_db('gunluk_yazilari',$baglan);

//xml dosyası olduğunu tanımlama
header('Content-Type: text/xml');

//rss beslemesi tagları
echo '<?xml version="1.0" encoding=utf-8"?>
<rss version="2.0">
<channel>
	<title>bcakir</title>
	<atom:link href="http://bcakir.com/feed" rel="self" type="application/rss+xml"/>
	<link>http://bcakir.com</link>
	<description>Saklayıcılıktan, Paylaşımcılığa</description>
	<lastBuildDate>Fri, 13 Apr 2012 18:12:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://bcakir.com</generator>';

//veritabanından son 10 kaydı al
$sec = mysql_query("SELECT id, title, description, pubDate FROM yazilar ORDER BY pubDate DESC LIMIT 10") or die(mysql_error());
while ($kayit = mysql_fetch_array($sec)){
    echo '
       <item>
          <title>'.$kayit[title].'</title>
          <description><![CDATA[
          '.$kayit[description].'
          ]]></description>
          <link>http://bcakir.com/yazi.php?id='.$kayit[id].'</link>
          <pubDate>'.$kayit[pubDate].' GMT</pubDate>
      </item>';
}

//açılan rss taglarını kapatma
echo '</channel>
</rss>';

//veritabanı bağlantısı sonlandırma
mysql_close();
?>

Biz burada son 10 kaydı listeledik. Siz kendinize uygun olarak değiştirebilirsiniz fakat 10-15 kayıtın ideal bir rakam olduğunu belirtmeden geçmeyeyim. Bir de buradaki tarih etiketinin değerinin doğru olduğuna emin olun. Yani, veritabanınıza tarihleri timestamp olarak keydettiyseniz, bu değerleri yukarıda gösterdiğim tarih yapısına çevirmeyi unutmayın. Oluşturduğumuz php uzantılı rss dosyasını xml uzantısına çevirmek için, .htaccess kullanmamız gerekli. Aşağıda kullanım örneğini göstereceğim.

RewriteRule ^rss.xml$ rss.php [L,NC]

Yukarıdaki örnek yönlendirme kodunu, Php dosyanızın bulunduğu dizine göre düzenlemeniz gerekli. Son olarak Php ile rss okumayı da anlatarak yazımı tamamlayayım.

<?php
//Rss beslememizin (XML dosyamızın) karakter seti
header("Content-Type: text/html; charset=utf-8");

//kaynaktan haberleri çekmekiyoruz
$xml=simplexml_load_file('http://bcakir.com/feed') or die('Kaynak okunamadı.');

//aldığımız son haberleri listeliyoruz
foreach($xml as $rss){
		foreach($rss->item as $kayit){
			$konu= $kayit->title;
			$bilgi=$kayit->description ;
			$link= $kayit->link;
			echo "Konu: <a href='$link[0]'>$konu[0]<a/><br />";
			echo 'Bilgi: '.$bilgi[0]."<br /><hr />";
		}
}
?>

Yukarıda ise sitemin haber kaynağında bulunan yazıları dinamik olarak okuyup, listeledim. Siz bunu kolayca başka sitelerin haberlerini çekmek için de kullanabilirsiniz. Önemli olduğunu düşündüğüm haber kaynağı konusunu da detaylıca işleyerek bir yazımızın daha sonuna gelmiş olduk. İyi günlerde kullanmanız dileğiyle, hoşçakalın.

 6.704 Okunma

Bu yazıya 16 yorum yapılmış.

  1. iyide hocam verdiklerinizi nasil kaydedeceğiz, onu da soyleseniz?

    • Dinamik rss oluşturmak için Php dosyası olarak kaydedeceksin ama sayfanın bir xml dosyası olduğunu sunucuya belirtmek için
      header(“Content-Type: text/html; charset=utf-8”);
      kodunu kullanmak yeterlidir.

  2. merhaba, hocam kazım arkadaşımıza katılıyorum.
    şimdi xml olarak mı kaydediceğiz yoksa php mi?
    php olarak kaydettiğimde dosyayı direk biglisayara yüklemeye çalışıyor .

  3. merhaba, hocam
    rss.php olarak kaydettiğimde,
    dosyayı bilgisayara indiriyor ve rss okuyucu yardımı ile veriyi okuyor;
    fakat;
    1 tr karakter sorunu yaşıyorum,
    2 bunu xml e çevire bilirmiym ?
    yani drek rss.xml veya sitemap.xml dosyası olarak site üzerinden erişmem mümkün mü? nasıl yapabilirim.

    • header ile sayfamızın xml olduğunu gösteriyoruz, sorun oluşturmaması gerekiyor. Bu uygulama rss beslemesi içindir, sitemap sayfasının yapısı daha farklıdır, bütün yazıların linklerini içerir sadece.

  4. Hocam şöyle bir sorunum var benim sitem Html sitesidir, yani .tr.gg ile açılan ücretsiz sitedir kodları eklediğimde Rss çıkmıyor o kodlar çıkıyor site bu php okumadığından mı yoksa hatamı yaptım veya siteye rss eklenmezmi ama ekleyeni de gördüm.

    • Eklenir ama rss Php ya da .NET ile yapılıyor (dinamik yapacaksan), hostun destekliyorsa ve programlama bilgin varsa kolayca eklenir.

  5. Nezamandır aklımdaydı bu konuyu araştırayım diye düşünürken burada karşıma çıktı. Güzelde bir yazı olmuş.

  6. RSS beslemeleri sosyal ağlarda site içeriğini listelettirmek için baya etkili

  7. Faydalı bir makale olmuş, paylaşım için teşekkürler.

  8. faydalı makaleniz için teşekkür ederim. siteye rss oluşturmam gerekiyordu. çok yardımınız dokundu.

  9. hocam hayırlı günler. sitemin rss kodu hata veriyor php bilmiyorum nasıl çözebilirim. saygılarımla

  10. Hocam çok isime yaradi tesekkurler

  11. Bu verileri slider şeklinde yayınlayabilir miyiz ?

  12. Teşekkürler işime çok yaradı.

  13. Peki hocam bu haberin resmini nasıl çektirebiliriz, bu kodda çekmiyor onu nasıl yaparız?

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla MySQL, Php
Kapat