RSS terimin günümüzde çok hit olmasını sağlayan etkenlerin başında elbette düzenli güncellenen blog, haber sağlayıcıları gibi sitelerin takip edilebilmesi ve bu gibi sitelerin her geçen gün biraz daha artmasıdır. RSS sistemi abonelik imkanları sayesinde ziyaretçilerinizden kopmamanız için çok önemli bir araçtır. Bu sayede aboneleriniz bizzat sitenize gelmeden içeriğiniz hakkında bilgi sahibi olur ve eğer RSS planlamanız gerçekten başarılı ise abonelerinizin düzenli ziyaretçiye dönüşmesini sağlamış olursunuz. Buda tamamı ile RSS beslemenizin içeriği ile doğru orantılı olarak gelişir.
RSS kısaltmasının ingilizce açılımı sürümler ile birlikte aşağıdaki gibi değişmiştir:
- Rich Site Summary (RSS 0.91)
- RDF Site Summary (RSS 0.9 and 1.0)
- Really Simple Syndication (RSS 2.0.0)
Günümüzde RSS bir çok site için vazgeçilmez bir hal almıştır. Eğer feedburner gibi bir sistemle de RSS beslemenizi desteklerseniz ziyaretçilerinize e-mail ile yazı takibi gibi ekstra hizmetler de sunabilirsiniz. Tabi bunu kendiniz kod yazarakta yapabilirsiniz ancak kesinlikle böyle bir servis için feedburner ı öneriyorum. Bu sayede RSS beslemenize ciddi şekilde destek oluşturabilir, aynı zamanda RSS beslemenize ait istatistik bilgilerinin tutulmasını sağlayabilirsiniz.
Siteniz için kullanabileceğiniz RSS oluşturma kodlarını aşağıda bulabilirsiniz. Kullanımı ve Yaratılması için gereken herşeyden elimden geldiğince yazının devamında bahsedeceğim.
Rahatlıkla her RSS beslemeniz için kolaylıkla kullanabileceğimiz ASP sınıf kodumuz aşağıdaki gibidir. ASP ile RSS Beslemesi oluşturmak için ilk adımı atıyoruz.
<%
class cls_CBRSS_Item
public Title
public Link
public Comments
public Description
public PubDate
end class
class cls_CBRSS
public Name
public Link
public Description
public PubDate
public GMT
public Encoding
public Language
public Items
’Gerekli olan tarih formatında çıktı oluşturmamızı sağlayan fonksiyonumuz
private function rfc822date(d)
dim sWeekDay
dim sMonth
select case Weekday(d)
case 2 sWeekday = "Mon"
case 3 sWeekday = "Tue"
case 4 sWeekday = "Wed"
case 5 sWeekday = "Thu"
case 6 sWeekday = "Fri"
case 7 sWeekday = "Sat"
case else sWeekday = "Sun"
end select
select case Month(d)
case 1 sMonth = "Jan"
case 2 sMonth = "Feb"
case 3 sMonth = "Mar"
case 4 sMonth = "Apr"
case 5 sMonth = "May"
case 6 sMonth = "Jun"
case 7 sMonth = "Jul"
case 8 sMonth = "Aug"
case 9 sMonth = "Sep"
case 10 sMonth = "Oct"
case 11 sMonth = "Nov"
case else sMonth = "Dec"
end select
rfc822date = _
sWeekDay & ", " & _
Right(string(2,"0") & Day(d),2) & " " & _
sMonth & " " & Year(d) & " " & _
Right(string(2,"0") & Hour(d),2) & ":" & _
Right(string(2,"0") & Minute(d),2) & ":" & _
Right(string(2,"0") & Second(d),2) & " " & _
GMT
end function
’RSS çıktımızı oluşturacak olan RenderRSS fonksiyonumuz
public sub RenderRSS
Response.Clear
Response.ContentType = "text/xml"
call Response.AddHeader("Content-Disposition", "filename=""beaverrss.xml""")
Response.Write("<?xml version=""1.0"" encoding=""" & Encoding & """?>" & vbCrLf)
Response.Write("<rss version=""2.0"">" & vbCrLf)
Response.Write(" <channel>" & vbCrLf)
Response.Write(" <title>" & Name & " RSS Feed</title>" & vbCrLf)
Response.Write(" <link>" & Link & "</link>" & vbCrLf)
Response.Write(" <description>" & Description & "</description>" & vbCrLf)
Response.Write(" <language>" & Language & "</language>" & vbCrLf)
Response.Write(" <pubDate>" & rfc822date(Now()) & "</pubDate>" & vbCrLf)
dim Item
for each Item in Items
set Item = Items(Item)
Response.Write(" <item>" & vbCrLf)
Response.Write(" <title>" & Item.Title & "</title>" & vbCrLf)
Response.Write(" <link>" & Item.Link & "</link>" & vbCrLf)
if(Item.Comments <> "") then
Response.Write(" <comments>" & Item.Comments & "</comments>" & vbCrLf)
end if
Response.Write(" <description><![CDATA[" & Item.Description & "]]></description>" & vbCrLf)
Response.Write(" <pubDate>" & rfc822date(Item.PubDate) & "</pubDate>" & vbCrLf)
Response.Write(" </item>" & vbCrLf)
next
Response.Write(" </channel>" & vbCrLf)
Response.Write("</rss>")
end sub
public sub AddItem(oItem)
call Items.Add(oItem.Title, oItem)
end sub
public function NewItem
set NewItem = new cls_CBRSS_Item
end function
sub Class_Initialize
set Items = createObject("Scripting.Dictionary")
GMT = "+0000"
Encoding = "utf-8"
Language = "tr"
IncludeStyleSheet = false
end sub
sub Class_Terminate
set Items = nothing
end sub
end class
%>
Arkadaşlar yukarıdaki kod bloğunu kendim yazmadım hatta orjinalinde RSS Beslemenizin görünümü iyileştirebileceğiniz bir stylesheet eklentiside bulunmaktaydı ancak ben bunu hep gereksiz görmüşümdür. Yani ben burada kodu sadece biraz editledim. Aslında çok daha basit bir kod bloğu ile de ihtiyacımızı giderebilirdik fakat buradaki amaç tamamı ile kodunuzun işlevsel olmasını sağlamak.
Arkadaşlar hatırlatmak isterim, yukarıdaki sınıfımızı asp uzantılı bir dosya içine yapıştırdıktan sonra projemizin kalan kısmına include etmemiz gerekmektedir. Ben yukarıdaki kodu cls_RSS.asp adı ile kaydettiğim için aşağıdaki betikte belirtmiş olduğum include parametresi de bu ada göre düzenlemiştir. Evet gelelim artık kodumuzun kalan kısmına :
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Option Explicit
session.codepage=65001
%>
<!--#include file="cls_RSS.asp" -->
<%
dim oRSS, oItem, site, condb, counter, Paging, i, rs, SQL
site = "http://www.siteniz.com/"
set oRSS = new cls_CBRSS ’Yeni bir RSS sınıfı oluşturduk
’Aşağıda da RSS için gerekli olan Site Bilgilerimizi Belirtiyoruz
oRSS.Name = "RSS Beslemesi"
oRSS.Link = site
oRSS.Description = "RSS İçerik Takip Sistemi"
oRSS.GMT = "+0000"
oRSS.IncludeStyleSheet = true
Set condb = Server.createObject("ADODB.Connection")
condb.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../veritabani.mdb")
’Gerekli olan Veritabanı table bağlantımızı oluşturuyoruz
Set rs = Server.createObject("ADODB.Recordset")
SQL = "select id,header,description,datex from tbl_Table Order By datex Desc"
rs.Open SQL,condb,1,3
counter = 0
Paging = 10
While counter < Paging And Not Rs.EOF ’Kayıtlar boş olana kadar yada belirttiğimiz içerik sayısı kadar döngü
set oItem = oRSS.NewItem ’Yeni bir item oluşturuyoruz
oItem.Title = rs("header") ’Item için gereken başlık bilgisi
oItem.Link = site & "icerik.asp?id=" & rs("id") ’İçeriğimizin tamamına ulaşım için gereken link
oItem.Comments = ""
oItem.Description = rs("description") ’İçeriğimiz hakkında açıklama Özet bilgi, yada içeriğin tamamı gibi
oItem.PubDate = rs("datex") ’Item için gereken tarih bilgisi
oRSS.AddItem(oItem) ’Item ı sınıfımıza ekliyoruz
counter = counter + 1
Rs.MoveNext ’Bir sonraki kayıt için veritabanımızı uyarıyoruz
Wend
Rs.Close
Set Rs = Nothing
oRSS.RenderRSS
set oRSS = nothing
Response.End
%>
Yukarıdaki kodda düzenlemeniz gereken noktalar olduğunu farketmişsinizdir. Ancak bunlar temel ASP bilgisine sahip birisi için çokta zor değişiklikler olmayacaktır. Gerisini zaten oluşturmuş olduğumuz cls_RSS.asp dosyamız hallediyor. Yukarıdaki kodlar utf-8 karakter set için düzenlendiğinden dosyaları kaydederken bu karakter setini kullanmanızı tavsiye ediyorum. Yoksa RSS beslemenizde karakter problemleri ile karşılaşabilirsiniz. Yukarıdaki kodların işinize yarayacağını umuyorum. Herhangi bir sorun yaşarsanız buradan size yardımcı olmaya çalışacağımdan emin olabilirsiniz. Artık elimizde her projemizde rahatlıkla kullanabileceğimiz oldukça işlevsel bir betiğimiz var.
19
2007
Çok yararlı bir makale ;) Teşekkürler!
19
2007
Yararlı olduğunu düşünmenize sevindim. Bu makalede anlatımım biraz karışık oldu ancak yeni ısınmaya başlıyorum :D
11
2008
fotokopi
09
2008
usta ben bu kodları denedim firefoxta arıza yaptı ona bir bakabilirmisin birde " call Response.AddHeader("Content-Disposition", "filename=""beaverrss.xml""") " kodunu acıklayabilirmisin ? teekkurler bu arada paylasım icin ;)
10
2008
@balıkesir,
kodları biraz düzenlemen gerek. Mesela yorum kısımlarındaki tırnak işaretleri problem çıkarmış olmalı. Yorumları kaldırabilir yada tırnak işaretleri Shift+2 tırnak işareti ile değiştirebilirsin.
call Response.AddHeader("Content-Disposition", "filename=""beaverrss.xml""") kodu içinde şunu söyleyebilirim aslında bu kod olmadanda işimizi görebiliriz. Orjinal koddan kalma bir fazlalık durumunda, gözümden kaçtığı için kusura bakmayın.