RSS beslemesi oluşturma ve okuma Rss beslemeleri temelde bir XML dosyasıdır, amaçları da girilen son yazıları belirli kurallara göre listelemektir. 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şlayalım. Daha sonra veritabınından aldığımız verilerle sürekli güncelliğini koruyan bir rss sayfası oluşturacağız.
Konunun 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ğiz. PHP- Kodu: <?xml version="1.0" encoding=utf-8"?> <rss version="2.0"> <channel> <title>bcakir</title> <atom:link href="http://siteniz.com/feed" rel="self" type="application/rss+xml"/> <link>http://siteniz.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://siteniz.com/iletisim-teorileri-ve-yeni-medya-duzeni.html</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://siteniz.com/jquery-nivo-slider.html</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österelim. PHP- Kodu: <?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>siteniz</title> <atom:link href="http://siteniz.com/feed" rel="self" type="application/rss+xml"/> <link>http://siteniz.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://siteniz.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(); ?>
Burada son 10 kaydı listeledik. 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. Son olarak Php ile rss okumayı da anlatarak yazımı tamamlayalım. PHP- Kodu: <?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 sitemizin haber kaynağında bulunan yazıları dinamik olarak okuyup, listeledim. Siz bunu kolayca başka sitelerin haberlerini çekmek için de kullanabilirsiniz. |