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, 6 yorum var, 991 defa okunmuş.
Etiket : ASP Sitemap Veritabani XML Webmaster Google
    Bu yazımda ASP ile bir sitemap’in veritabanından çekilen verilerle nasıl otomatik olarak oluşturulabileceğini sizlerle paylaşacağım. Biliyorsunuz sitemap dosyaları artık Webmaster’lar yada kendini öyle sananlar için vazgeçilmez bir ihtiyaç. Google ın Webmaster Tools hizmeti uzun zamandır site sahiplerinin kullandığı bir hizmet. Bu hizmetin yararını nerde mi görüyoruz? Buna cevabım kısaca şöyle olabilir: Google Indexlemesinde yani Google ın sayfalarınızı daha çabuk indekslemesini istiyor ve dolayısı ile daha fazla arama sonucunda yer almak istiyorsanız bu hizmetin yararını fazlası ile görüyorsunuz. Aslında elinizde başka bir seçenek daha var : Bırakın google sitenize kendi istediği zaman uğrasın. Sizde ziyaretçilerinizi google ın istediği zaman bulursunuz. Tabi bu benim önermediğim bir tutum olur.

    Webmaster Tools a nasıl sitemap eklenir yada nasıl site doğrulaması yaptırılır bunları başka bir zaman yazmayı düşünüyorum. Şimdi gelelim asıl meselemize Asp ile otomatik bir sitemap hazırlamak istiyoruz dedik değil mi? Hadi o zaman yapalım şu işi :D



    İlk olarak dikkat edilmesi gereken sitemap dosyalarının bir formatı olduğu. Bu format düzeninden ayrıntılı olarak bahsetmek istemiyorum ama kısaca başlıklar halinde bahsedebiliriz. Aslında sitemap dosyaları XML verilerinden başka bir şey değildir. Bu yüzden genelde sitemap dosyaları

<?xml version="1.0" encoding="UTF-8"?>

kodu ile başlarlar. Bu kodda zaten birşey yok tabi XML versiyonu ve kodlama için gereken Karakter Set dışında. Arkasından gelen kod ise

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">

yukarıda yer alan tek satırlık kod. Bu satırın özelliği ise xml verisine ait şema bilgilerinin yer alması.Fakat bizi asıl ilgilendiren satırlar bundan sonraki satırlar. Yani sitemizde yer alan url lerin gösterileceği satırlar.

<url><loc><%=site%></loc><lastmod><%=mapdateformat(Now()) %></lastmod><changefreq>daily</changefreq> <priority>1.00</priority></url>

bu ilk url satırımız. burada da site değişkeni ilk sitemap dosyası içerisinde yer alan ilk url nin kendi site adresimiz olmasını sağlıyor. Bu değişkene kendi site adresinizi değer olarak atamalısınız. mapdateformat fonksiyonu ise sitemap için uygun olan tarih formatını oluşturmakta. Diğer verileri değişmez olarak bırakıyorum yani her url için değişme frekansı ve öncelik değerleri sabit olacak siz bunların yerine değişken değerler kullanabilirsiniz. Tamamı ile sizin tercihinize kalan özellikler. Aşağıya ise sitemap dosyamızın tam kodunu yerleştiriyorum. Aşağıda veritabanından verilerimizi çekerek nasıl otomatik olarak sitemap hazırlayabileceğimizi gösteren kodların tamamı yer almakta.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 
<%
rem Bu Script Uğur Özşahin Tarafından 05 Ekim 2007 Tarihinde Yazılmıştır.
rem Sayfa kodumuz UTF-8
session.codepage="65001"
rem Sitemizin adresi
site = "http://www.siteniz.com/"
rem Veritabanımızın yolu
db = "/veritabanı_klasor/veritabanı.mdb"
rem veritabanı bağlantısı yapılıyor
Set condb = Server.createObject("ADODB.Connection")
condb.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)

rem Url de yer almaması gereken karakterleri ayıklıyoruz.
Function replink(metin)
metin = Replace(metin,"/","")
metin = Replace(metin,"\","")
metin = Replace(metin,","," ")
metin = Replace(metin,"."," ")
metin = Replace(metin,"!"," ")
metin = Replace(metin,"’"," ")
metin = Replace(metin,"`"," ")
metin = Replace(metin,"%"," ")
metin = Replace(metin,"!"," ")
metin = Replace(metin,":"," ")
metin = Replace(metin,"<"," ")
metin = Replace(metin,">"," ")
metin = Replace(metin,"’","")
metin = Replace(metin," ","-")
metin = Replace(metin,"____","-")
metin = Replace(metin,"___","-")
metin = Replace(metin,"__","-")
metin = Replace(metin,"-----","-")
metin = Replace(metin,"----","-")
metin = Replace(metin,"---","-")
metin = Replace(metin,"--","-")
metin = Replace(metin,"[","")
metin = Replace(metin,"]","")
metin = Replace(metin,"{","")
metin = Replace(metin,"}","")
metin = Replace(metin,"(","")
metin = Replace(metin,")","")
metin = Replace(metin,"ş","s")
metin = Replace(metin,"Ş","S")
metin = Replace(metin,"ğ","g")
metin = Replace(metin,"Ğ","G")
metin = Replace(metin,"İ","i")
metin = Replace(metin,"ı","i")
metin = Replace(metin,"ç","c")
metin = Replace(metin,"Ç","C")
metin = Replace(metin,"ö","o")
metin = Replace(metin,"Ö","O")
metin = Replace(metin,"ü","u")
metin = Replace(metin,"Ü","U")
replink = metin
End Function

rem Sitemap XML verisi için gereken tarih formatı
Function mapdateformat(datex)
Dim GMT
GMT = "+02:00"
mapdateformat = DatePart("yyyy",datex) & "-" & _
Sifirekle(DatePart("m", datex)) & "-" & _
Sifirekle(DatePart("d", datex)) & "T" & _
Sifirekle(DatePart("h", datex)) & ":" & _
Sifirekle(DatePart("n", datex)) & ":" & _
Sifirekle(DatePart("s",datex)) & GMT
rem Format: 2007-10-05T00:04:09+02:00
End Function
rem Formata uygunluk için tek karakterden oluşan sayıların soluna 0 ekliyoruz
Function Sifirekle(metin)
If Len(metin) = 1 Then
Sifirekle = "0" & metin
Else
Sifirekle = metin
End If
End Function

Response.Buffer = True
rem Dosyamızın içerik tipi
Response.ContentType = "text/xml"
%><?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<%
Response.Write "<url><loc>" & site & "</loc><lastmod>" & mapdateformat(Now()) & "</lastmod><changefreq>daily</changefreq><priority>1.00</priority>"

rem tbl_kategori kayıtları ile kategori linklerimizi oluşturuyoruz
Set con = Server.createObject("Adodb.Recordset")
sql = "select id,veri,tarih,durum From tbl_kategori where durum = True Order By tarih Asc"
con.Open sql,condb,1, 3
i = 0
Do While i =< con.RecordCount And Not con.eof
Response.Write "<url><loc>" & site & "kategori/" & con("id") & "-" & replink(con("veri")) & "/" & "</loc><lastmod>" & mapdateformat(con("tarih")) & "</lastmod><changefreq>daily</changefreq><priority>0.50</priority></url>" & Chr(13)
i = i + 1
con.MoveNext
Loop
con.Close
Set con = Nothing

rem tbl_baslik kayıtları ile herbir başlığımız için url bilgilerini otomatik olarak çekiyoruz
Set con = Server.createObject("ADODB.Recordset")
sql = "select id,veri,durum,tarih from tbl_baslik where durum = True order by tarih Asc"
con.Open sql,condb,1,3
i = 0
Do While i =< con.recordcount And Not con.Eof
Response.Write "<url><loc>" & site & "baslik/" & con("id") & "-" & replink(con("veri")) & "/" & "</loc><lastmod>" & mapdateformat(con("tarih")) & "</lastmod><changefreq>daily</changefreq><priority>0.50</priority></url>" & Chr(13)
i = i + 1
con.MoveNext
Loop
con.Close
Set con = Nothing
%></urlset>
    Yukarıdaki tarih formatı saniye mertebesine kadar geniş olduğu için sizin veritabanınızdaki formatın da bu şekilde olması gerekmektedir. Fakat tarih formatını sizin veritabanınızda kullandığınız tarih formatına uyarladığınız taktirde sorun ortadan kalkmış olacaktır.

    Son olarak yukarıdaki kodları tam olarak kullanabilmek için kendinize göre düzenlemeniz gerekmektedir. Bu kodlardaki veritabanı bağlantısı ve veritabanındaki alanlar sadece tahminidir. Bu alanları kendi veritabanınızdaki alanlara göre düzenlemelisiniz. Ayrıca url yi de kendi sitenizde kullandığınız url formatına göre düzenlemeniz gerekebilir. Kendi sitesine entegre etmek isteyen fakat sorunlarla karşılaşan arkadaşlara yardımcı olabilirim bunun için benimle iletişim bölümünden irtibata geçmeniz yeterli olacaktır.











  • Murat Hakan
    www.e-forumbahane.com

    Geniş içeriklli paylaşım eğlence platformu
  • hüseyin yaman
    Merhaba siteme entegre etme konusunda yardım almak için sizi rahatsız ediyorum yardım ederseniz sevinirim.

    çıkan hata

    XML sayfası görüntülenemiyor
    XML girişi XSL stil sayfası kullanılarak görüntülenemez. Lütfen hatayı düzeltin ve Yinele düğmesini tıklatın veya daha sonra yeniden deneyin.


    ---------------------------

    Düz dize bekleniyordu, ancak tırnak açma karakteri bulunamadı. ’http://www.bilgice.com/sitemap.asp’ kaynağı işlenirken hata...


    böyle bir hata veriyor sorun ne olabilir?
  • walleq
    @hüseyin yaman bey,

    İlk sorun için söyleyebileceğim, xml kodunuzda yer alan xml-stylesheet etiketini kaldırarak denemeniz olacaktır. Ancak eğer benim yazmış olduğum kodu kullanıyor iseniz, zaten böyle bir sorun yaşamıyor olmalıydınız. Ayrıca ikinci sorunun çözümü ile de birinci sorunun çözülme ihtimali söz konusu. Bu yüzden önce ikinci sorunun çözümüne odaklanmanız yararlı olacaktır.

    İkinci sorun için ise sorun muhtemelen hatalı tırnak işareti kullanımı ile ilgili. Tırnak işaretlerini tekrar kontrol etmenizi öneriyorum.
  • mesut tetikçi
    www.bedavasitemolsun.com

    Paylaşım için teşekkürler temelde önemli bilgieler..
  • F. Korkmaz
    Güzel bir paylaşım olmuş. Güncel bir Sitemap bir site için çok önemlidir. Bunu kod ile yaptırmak bence çok mantıklı...
  • Yusuf Çiçek
    Guzel PayLasım emeqine saqLık.... Www.SosyalFM.Com
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