Walleq's Blog
Ana Sayfa Profilim Arşiv İletişim
.:. Burn Me Alive .:.

Loading



22 Kasım 2008 Cumartesi
Kategori: Yazılım
Yazar : Walleq, 5 yorum var, 671 defa okunmuş.
Etiket : RSS Besleme ASP Kod
    RSS ’in karşılığı için fazla teknik ayrıntıya girmeden, düzenli güncellenen sitelerin içeriklerinin özetlerinin yada bizzat tamamının yer aldığı XML dosyalarıdır. Bu yazıda başlıktan anlaşılacağı üzere ASP ile RSS Beslemesi oluşturmak konusunda bazı bilgiler vermeye çalışacağım.

    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.











  • Kaner TUNCEL
    Çok yararlı bir makale ;) Teşekkürler!



  • Walleq
    Yararlı olduğunu düşünmenize sevindim. Bu makalede anlatımım biraz karışık oldu ancak yeni ısınmaya başlıyorum :D
  • fotokopi
    fotokopi

     

  • balikesir
    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 ;)
  • walleq
    @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.

Kategoriler
Son Yazılarım
» Taşınabilir ASP Web Server
» Portable VirtualBox 1.6.2
» PHP ile E-Mail Geçerlilik Kontrolü
» MySQL Türkçe Karakter İlk Harf Sıralaması
» Smarty Template Engine Süslü Parantez Sıkıntısı
Etiket Bulutsusu
Son Yorumlar
mehmet
» Teşekkürler işimize yarayacak ...<
Yusuf Çiçek
» Guzel PayLasım emeqine saqLık.... Www.So
F. Korkmaz
» Güzel bir paylaşım olmuş. Güncel bir Sit
cizgiperde
» bende kullanıyorum gayet güzel bir host
gokhan colak
» Bana kaynak kodlarını yollar mısın ? nas
Bağlantılar
» isimler
» ABD de Yaşam
» Ferruh Mavituna Blog
» Osmanlica Türkçe Sözlük
» Kişisel Güncem
» Ergene.NET - Renk Katar
Blog Takip Sistemi

E-Mail İle Blog Takibi :


Coded And Designed By Walleq