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

Loading



03 Eylül 2010 Cuma
Kategori: Yazılım
Yazar : Walleq, 21 yorum var, 3350 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
  • Emre
    Öncelikle teşekkürler. Bunu Mydesign Haber Scriptinde nasıl uygulayabilirim. Yardımcı olursanız çok memnun olurum.

    XML Ayrıştırma Hatası: iyi düzenlenmiş değilLocation: http://www.xxsitem.com / Number 3, Column 163:
  • Haber
    Kardeş ben bunu itunit.net için kurmak istedim ancak...
    Düz dize bekleniyordu, ancak tırnak açma karakteri bulunamadı. ’http://www.itunit.net/haber/sitemap.asp’ kaynağı işlenirken...


    bu hatayı verdi kendi siteme göre uyarladım hepsini :(
  • walleq
    Kodu tekrar gözden geçir, tırnak işaretlerine dikkat et. Bu haliyle çalışıyor. Düzenleme yaparken bir hata yapmış olabilirsin.
  • HakkanR
    Ben oluşturulan bi asp sayfası browserda görüntülendiğinde bunun xml formatında görüntülenmesini istiyorum.
    Response.ContentType = "text/xml"
    Response.Write("")

    Sayfa bu şekilde başlıyor xml kodlarıyla devam ediyor
    ancak sayfa browserde boş görüntüleniyor kaynak görütülemede xml kodlarını görebiliyorum..

    nerde hata yapıyorum yardımcı olabilir misiniz?
  • walleq
    @HakkanR belki saçma bir soru olacak ama, item elementleri dolu olarak geliyormu kaynak kodlarınızda eğer boş iseler görüntülenememesi normal. Eğer uygulamaya çalıştığınız sayfa web üzerinde ise linkini yollarsanız bir bakabilir ve sorunun nereden kaynaklandığı konusunda size yardımcı olabilirim.
  • cem
    merhabalar
    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://hayalsitesi.net/sitemap.asp’ kaynağı işlenirken hata...



    ben böyle bir hata alıyorum yukarda verdiğiniz kodların tırnaklarına dokunmadan siteismini ve db klasör ismini ve mdb ismini yazdım sitemap.asp olarak kaydettim ftp de ana dizine attım bu hatayı verdi sizce nerde hata yapıyorumdur yardım ederseniz sevinirim paylaşım için sağolun
  • walleq
    @cem merhabalar,

    kodları denediğin siteye baktım ancak şu an Type mismatch: ’mapdateformat’ hatası veriyor. Bununda nedeni mapdateformat fonksiyonuna geçerli bir tarih formatı göndermiyor oluşun olabilir.

    Önceki hata konusunda da şöyle yapabiliriz. Uygulamaya çalıştığın kodları bana iletişim menüsünü kullanarak gönderebilirsen inceleyebilir ve sana daha sağlıklı bir geri dönüş yapabilirim. Ayrıca bunu yapmadan önce tırnak işaretlerini tekrar kontrol etmeni öneririm. XML verilerinde bu benimde daha önce sık karşılaştığım problemlerdendi.


  • mirc
    ya gercekten cok sagolun bu süper oldu ya..

     

  • cem
    data ayarlarını nasıl yaparız buna nasıl uyarlarız ben data ayarlarını yapamadım bir türlü sonrada sıkıldım sitemap programıyla sitemap mı yaptım :)ama otomatik olması daha iyi olurdu
  • Live
    Bu xmlde bir kac sorum olacak. Mesela tarih kısmını yazmasak ne olur sorun cıkarmı? Ayrıca localhostta xml yi acınca sorun veriyor gerekse hostta bunun anlamı ney = Ad geçersiz bir karakterle başladı.. diyor.
  • meral yilmaz
    otomatik site map işlemini gerceklstiremedim bu konuda yardımcı olursanız sevinirim nasıl yapacagım ve ya siz hazırlayım bana gönderme ihtimaliniz bulunuyıormu
  • sinan tarkun
    Güzel bir yazı teşekkürler.
  • Freguencey
    güzel bi uygulama tam aradığımdı tşkler.
  • tatil TL
    Elinize sağlık güzel olmuş.

    http://www.tatil.tl
  • Kayseri Dershaneleri
    Güzel bir paylaşım olmus teşekkürler
Kategoriler
Son Yazılarım
» Postacı Programı Kullanıma Hazır
» 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ı
Etiket Bulutsusu
Son Yorumlar
zafer
» yahuu get started butonu yokki :S ???? a
cicekci
» hocam kusura bakmayın ama benim sormak i
Havuz
» çook teşekkür ederim hoş bir paylasşım o
stiw
» teşekkürler işime yarıyıcak bilgiler bun
Feyyaz
» simdi ben anlamadım bu kodları nereye ek
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
Gizlilik Politikası