PHP Ajax RSS Reader

RSS, haber sağlayıcıları, bloglar ve podcastler tarafından kullanılan, yeni eklenen içeriğin rahatlıkla takip edilebilmesini sağlayan bir internet sayfası bildirimcisidir. Kullanıldığı dosya biçimleri .rss ve .xml dir. RSS Reader ile dilediğiniz sitenin RSS başlığını güncellik sırasına göre kendi sitenize yerleştirebilir ve sitenizi ziyaret eden kullanıcılara sunabilirsiniz.

Örnekte RSS Reader sayfayı yenilemeden seçilen RSS Feed’de bulunan yazıları sayfada gösterecektir.

index.html

<html>
<head>
<script>
function showRSS(str) 
{
  if (str.length==0) 
  { 
    document.getElementById("rssOutput").innerHTML="";
    return;
  }

  if (window.XMLHttpRequest) 
  {
    // IE7+, Firefox, Chrome, Opera, Safari için
    xmlhttp=new XMLHttpRequest();
  } 
  else 
  {  // IE6, IE5 için
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  
  xmlhttp.onreadystatechange=function() 
  {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        document.getElementById("rssOutput").innerHTML=xmlhttp.responseText;
      }
  }
  
  xmlhttp.open("GET","getrss.php?q="+str,true);
  xmlhttp.send();
}
</script>
</head>
<body>

<form>
<select onchange="showRSS(this.value)">
<option value="">RSS-Feed Seç:</option>
<option value="Kodburada">Kodburada RSS</option>
<option value="CGN">CGN RSS</option>
</select>
</form>
<br>
<div id="rssOutput">RSS-Feed burada listelenecek...</div>
</body>
</html>

Form elementi içerisine RSS Feed’in çekileceği adreslerin başlıklarını girebilirsiniz. getrss.php dosyasında başlığı girilen adreslerin RSS Feed’lerini çekip sayfamızda yayınlayacağız.

getrss.php

<?php
//URL'den rss parametresi alınıyor
$rss=$_GET["rss"];

//Hangi feed seçili olduğu belirleniyor
if($rss=="Kodburada") 
{
  $xml=("http://www.kodburada.com/rss");
} 
elseif($rss=="CGN") 
{
  $xml=("http://www.cgnyazilim.com/blog/rss");
}

$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);

// "<channel>" dan elementler çekiliyor
$channel=$xmlDoc->getElementsByTagName('channel')->item(0);
$channel_title = $channel->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$channel_link = $channel->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$channel_desc = $channel->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;

// "<channel>" dan çekilenler elementler bastırılıyor
echo("<p><a href='" . $channel_link
  . "'>" . $channel_title . "</a>");
echo("<br>");
echo($channel_desc . "</p>");

// "<item>" dan elementler çekilip bastırılıyor
$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $i<=2; $i++) {
  $item_title=$x->item($i)->getElementsByTagName('title')
  ->item(0)->childNodes->item(0)->nodeValue;
  $item_link=$x->item($i)->getElementsByTagName('link')
  ->item(0)->childNodes->item(0)->nodeValue;
  $item_desc=$x->item($i)->getElementsByTagName('description')
  ->item(0)->childNodes->item(0)->nodeValue;
  echo ("<p><a href='" . $item_link
  . "'>" . $item_title . "</a>");
  echo ("<br>");
  echo ($item_desc . "</p>");
}
?>

RSS Reader uygulamasını istediğiniz gibi güncelleyip yayınlayabilirsiniz. Uygulamanın güncel halini Github adresimden indirebilir ve takip edebilirsiniz.

Cevapla

E-posta adresiniz yayınlanmayacak. Gerekli alanlar işaretlenmelidir *

*