Bir çoğumuz

resmini değişik sitelerde görmüşüzdür. Sağ taraftaki büyük "blog" yazısının hemen sağ alt köşesinde de bir tane bu logodan bulunuyor -) Dün akşam blog'um için RSS yayını kısmını da yazdım. Eh blog yüzde yüz "el" yapımı oldu. Yoksa "ev" yapımı mı desek -)
Wikipedia'nın
şu sayfasında RSS yi şöyle tanımlamış;
RSS, genellikle haber sağlayıcıları, bloglar ve podcastler tarafından kullanılan, yeni eklenen içeriğin kolaylıkla takip edilmesini sağlayan özel bir XML dosya formatıdır. Kullandığı dosya biçimleri .rss ve .xml'dir.
RSS kısaltmasının açılımı ve zaman içinde gelişimi şöyledir:- Rich Site Summary (RSS 0.91)
- RDF Site Summary (RSS 0.9 and 1.0)
- Really Simple Syndication (RSS 2.0.0)
İnternet kullanıcısı RSS teknolojisi ile düzenli olarak içerik sunan sitelere abone olabilir ve çeşitli RSS istemcileri sayesinde içeriği takip edebilir. Site yöneticisi veya sahibi bu hizmeti sunmak için bir takım teknik düzenlemeler yapmalı ve uygun formatta XML'i RSS istemcisi talep ettiğinde göndermelidir.
RSS'in ne olduğunu öğrendikten sonra RSS yayımcımızı yazalım. Yazacağımız RSS in bir özelliği olsun. Kullanıcı en son kaç girdiyi okuyacaksa bunu kendisi belirtebilsin. Yoksa standart olarak 10 adet girdiyi yayım yapsın.
. . . . . . . . . .
<?php
if (empty($_GET["adet"]))
{
$adet="10";
}
else
{
$adet=$_GET["adet"];
}
$url="http://irfandurmus.com/index.php?id=";
$url değişkeni ile RSS istemcisinden ziyaretçi tıkladığı zaman gideceği sayfayı yazıyoruz. Daha sonra bu satırın sonuna okunacak yazının id numarasını dinamik olarak yazdıracağız.
Eğer RSS yayıncımıza kaç adet okunmak istendiği belirtilmezse, ($_GET[adet] değişkeni boş gelecek olursa) 10 adet yayım yapacak. Kullanıcı rss.php?adet=30 gibi bir istekde bulunursa RSS istemcimiz son 30 girdiyi yayımlayacak.
mysql_connect('localhost','USER','PASSWD') or die ("Veritabanına bağlanılamadı. Hata: " . mysql_error());
mysql_select_db("DB_NAME");
Veri tabanı bağlantımızı kurduk
$sqlRSS="SELECT * FROM table_name ORDER BY id DESC";
$okuRSS=mysql_query($sqlRSS);
MySQL veritabanımızdan gerekli satırları okuduk. Şimdi XML kodlarımızı yazmaya başlayalım.
echo "<?xml version=\"1.0\" encoding=\"iso-8859-9\"?>"
?>
XML ile PHP kodlarımız karışmasın diye echo ile yazdırdım. PHP tagımızı kapatıp burayı text olarak yazıyorum.
<rss version="2.0">
<channel>
<title>irfaN's Blog</title>
<link>http://www.irfandurmus.com/blog</link>
<description>Web Developer and Photographer</description>
<lastBuildDate>2 Mayıs 2007 20:47:12 +0200</lastBuildDate>
<language>tr-TR</language>
Yazdığımız kısmı açıklayalım. <rss version> ile sürümümüzü belirtiyoruz. <channel> ile kanalımızı açıyoruz. <title> tagları arasına RSS yayını yaptığımız sitemizin başlığını yazıyoruz. <link> tagları arasına sitemizin adresini yazıyoruz. <description> tagları arasına sitemizin kısa açıklamasını yazıyoruz. <lastBuildDate> tagları arasına RSS dosyasının son güncelleme tarihini yazıyoruz. Bunu PHP'nin date() fonksiyonu ile otomatik yazabiliriz. <language> tagları arasında da kullandığımız dili belirtiyoruz. Tag içeriklerinin büyük küçük harf duyarlı olduğunu belirtemeden geçmeyelim. Gerçi büyük/küçük harf duyarlılığı PHP programcıları için tanıdıktır.
Döngümüzü kurup, verileri çekmeye başlamadan önce tablomuzda id, baslik, tarih, yazi, isimlerinde 4 tane alan olduğunu hatırlatıyım. Bu alanları kendinize göre değiştirmelisiniz.
Şimdi döngümüzü kuralım. verimizi çekmeye başlayalım.
<?php
for ( $i=0; $i < $adet; $i++ )
{
$satir=mysql_fetch_array($okuRSS);
?>
Döngümüzü kurduk, fakat kapatmadık. Şimdi döngü içerisinde yer alacak blog girdilerini, RSS'in anlayacağı dilde yazalım.
<item>
<title><?php echo $satir["baslik"]; ?></title>
<link><?php echo $url . $satir["id"] ?></link>
<pubDate><?php echo $satir["tarih"]; ?></pubDate>
<description><![CDATA[<?php echo substr($satir["yazi"],0,350) . "[...]"; ?>]]></description>
</item>
<?php
}
?>
<item> Tagı yeni bir içerik için kullanılıyor. Her göndereceğimiz içeriği <item> tagları arasında RSS okuyucularına gönderiyoruz. RSS istemcileri Bu içeriğin başlığını <title> tagındandan okuyorlar. <link> tagı ise tıklandığı zaman nereye gideceğini yazıyoruz. Daha önce tanımladığımız $url değişkeninin yanına okunacak yazı id sini yazdırıyoruz. <pubDate> ile yazının giriş tarihini yazıyoruz. Bunu da veritabanından çekmemiz en güzeli. <description> tagları arasına içeriğimizin ilk 350 karakterini açıklama olarak yazıyoruz. Veritabanımızda ayrı bir açıklama bölümü yer alıyorsa onu da buraya yazdırabiliriz. <item> tagını, sonrasında döngümüzü kapatarak işlemi bitiriyoruz.
Son işlem olarak kanalımızın ve RSS dosyamızın kapanış taglarını yazıyoruz.
</channel>
</rss>
Kodlardaki gerekli yerleri değiştirerek haber, blog, portal türü herhangi bir sitede RSS yayını yapabilirsiniz.