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 Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?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 Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?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 Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?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.