21 Ağustos 2007

Blogger'a Son Yorumlar & Yazılar Eklentisi

Uzun zaman önce burada Blogger'da son yorumlar eklentisini nasıl oluşturacağımızı anlatmıştım. Bu sistemin mantığı gerçekten çok güzel. Ancak bir dezavantajı var. Yaptığımız çalışma, gücünü RSS'den aldığı için yorumlar gecikmeli olarak gözüküyor.

Şimdi anlatacağım yöntemde ise bir JavaScript'ten faydalanacağız. Bu JavaScript JSON formatında olacak. (bknz= JSON: JavaScript Object Notation).

JSON yöntemini kullanmamızın nedenine gelince;
Bu format ile blogumuzun son yorumlarının listelendiği RSS kaynağına başvurup, bilgiyi JavaScript nesnelerine çeviriyoruz. Daha sonra bu JavaScript ögelerini anlaşılır bir dile çeviriyoruz. Böylece RSS'den alınan yorumlar, bizim anlayacağımız bir dile çevriliyor. Bu JavaScript dosyası hem son yorumları hem de son başlıkları görüntüleyebilmek için kodlanmıştır.

Peki Bunu Neden Yapıyoruz?


İlk yöntemimde , RSS beslemesi olan bir sayfa ögesi oluşturup, kaynağını da yorum RSS'si olarak belirliyorduk. Ancak bu yöntemde RSS kaynağımıza anlık olarak geri başvurulup bilgi çekilmediğinden, yorumlar gecikmeli olarak gözüküyordu. İşte bunu çözebilmek için de JavaScript kullandık. Bunu JSON yöntemi ile yapmamızın nedeni ise, JavaScriptin XML döküman (RSS) ile etkileşime girmesi için bu yöntem gerekiyor.

Hadi sıkıldım, derse başlayalım.


İlk öncelikle JavaScriptimizi bir yerde barındırmalıyız. Ben barındırma servisi olarak GooglePages kullanıyorum. JavaScript dosyasını buraya yükledikten sonra web adresini almalısınız. (Örnek JavaScript kaynağı: http://mafiamax.googlepages.com/sonyorumlar_tr.js)

Şimdi bu JavaScripti şablonumuzdan çağırmalıyız. Bunun için;

<script src='http://kullanıcıadı.googlepages.com/sonyorumlar_tr.js' type='text/javascript'/>

kodunu şablonumuzda <head> etiketleri arasında uygun bir yere koymalıyız. Bunun için en uygun yer ya head etiketinden hemen sonrası ya da bitiminden hemen öncesidir.

Şimdi buraya kadar yaptıklarımızda, bir yerde barındırdığımız JavaScriptimizi çağırdık. Bundan sonrasında elde edilen bilgilerin gösterimi için bir script
kullanacağız.

Kullanacağımız script;

<script language="javascript"> var numcomments = 5; var numchars = 70; var showposttitle =false; var showcommentdate = true;  </script>
<script src="http://www.siteadresiniz.blogspot.com/feeds/comments/default?alt=json-in-script&callback=showrecentcomments"></script>

Bu scriptte verilen url değeri yorum RSS kaynağının adresi. Eğer bunun yerine son başlıkları görüntülemek isterseniz, koyu ile belirtilen yere
http://www.siteadresiniz.blogspot.com/feeds/posts/default urlsini yazın.

Şimdi bu scripte JSON yöntemi ile XML dökümandan aldığımız bilgilerin hangilerinin gösterilip gösterilmeyeceğini, gösterilecekse sayısını belirleyeceğiz.

-numcomments: Yorumların sayısını belirler.
-numchars: Yorumlardaki görüntülenecek karakter sayısı.
-showposttitle: Yorumun bulunduğu yazı başlığını gösterip/göstermeme (true/false). Yalnız bu seçeneğin bir dezavantajı var. JavaScriptimiz yazı başlığını, yazının urlsini kullanarak yapıyor. Blogger'da kalıcı bağlantılar oluşturulurken Türkçe karakterler siliniyor. Bu yüzden de başlıklar bozuk görüntüleniyor. Ben JavaScriptin başka bir kaynaktan başlığı alıp alamayacağını düşündüm ama bir türlü kaynak bulamadım. Bu yüzden bu ayarı kapatıyorum.
-showcommentdate: Yorumun yayınlandığı tarihi gösterip/göstermeme (true/false)

Bu script ile belirlediğiniz sayıdaki yorumlar yine belirlediğiniz kriterlerde gösterilecek. Bu yorumları gösterebilmek için;

Şablon>Sayfa ögesi ekle>HTML/JacaScript>açılan pencereye 2. scripti yapıştırın ve kaydedin. Sonra şablonda nerede gözükmesini istiyorsanız oraya sürükleyip bırakın.

JavaScript dosyasını (bir sunucuda barındıracağımız dosya) indirmek için tıklayın.

Açıklama: Bu JavaScripti ben baştan aşağı yazmadım. Bu sitenin yazarı bu JavaScripti yazmış. Ancak programlanırken İngilizce sonuçlar çıkaracak şekilde programlanmıştı. Ayrıca Türkçe karakterlerde de sorun çıkarıyordu. Bu yüzden kodu baştan aşağı düzenledim.

Düzenlenmeden önceki hali:


Düzenlemeden sonraki hali:


Yorumun bulunduğu başlığın görüntülenmesi açıkken ki hali:


Herhangi bir sorun yaşarsanız sormaktan çekinmeyin ;-)
Bu yazıya 37 adet yorum yapılmış. Düşüncelerini belirtmek istiyorsan durma yorumunu paylaş!
  1. Damacanadaki desteğiniz ve güzel yorumunuz için çok teşekkür ederim konu ile alakasız oldu yorumum ama idare edin :) Bu arada bu plug ini ben ilk kurduğumda dünya benim olmuştu. Kullanmayanlara tavsiyem deneyin acayip memnun kalacaksınız.

    YanıtlayınSil
  2. Rica ederim, içimden gelenleri söyledim sadece. Gerçeklerde bunlar.

    Gerçekten Blogger'ın en büyük eksikliklerinden biri. Bu eklenti ile dert tasa kalmıyor. :-))

    YanıtlayınSil
  3. Dediğin gibi Blogger'ın tavsiye ettiği şekilde yapınca hem eksik, hem geç hem de kötü oluyordu.

    Hemen uygulamaya alayım. Çok iyi oldu bu.

    Teşekkürler.

    YanıtlayınSil
  4. Dostum link çalışmıyor, herhalde GooglePages sayfan aylık 100 MB lık bandwidth sınırı aşmış.

    YanıtlayınSil
  5. Damacana sorun bandwidth te değil. Sen mafiamax.googlepages.com/sonyorumlar.js ye girmeye çalışıyorsun. Ben siteyi bilerek yayınlamadım. Ama scriptte kaynak olarak bu adresi verdiğinde çalışacaktır. Çünkü bilgiyi sunucudan çekeceksin...

    YanıtlayınSil
  6. Erdal, JavaScript dosyasında değişiklikler yapmışsın seni hınzır :-)) Şaka bir yana güzel olmuş, ama bence bir eksiği var. Sen dedi ki ifadesini kaldırmışsın, bari yorum sahibinin adından sonra virgül yada iki nokta üst üste işaretlerini koysaydın. Bence öle yap.

    YanıtlayınSil
  7. Merhabalar,

    Bu faydalı paylaşımınız için teşekkürler, nitekim bende faydalandım.

    Paylaşımınıza sağlık...

    YanıtlayınSil
  8. @İdris cin,
    Rica ederim ne demek. Sonuçta ben de bu JavaScript dosyasını başka bir yerden bulup sadece düzenleme ve Türkçeleştirme yaptım. Tabi bir de nasıl kullanılacağını yazmaya çalıştım. :-)

    Bilgi paylaştıkça çoğalır...

    YanıtlayınSil
  9. nedense bende yorumu yazanın ismi görünmüyor... orada author u true olarak yapmama rağmen görünmüyor neden olabilir acaba?

    YanıtlayınSil
  10. @veyselkeles, dün yaptığım bir güncellemeden dolayı sorun oluşmuştu. Şimdi düzelttim, herşeyin yolunda olması gerek.

    Ayrıca scriptte bulunan var author = false/true; değerini silebilirsin. Çünkü bu tanımlamayı dosyadaki güncellemeden sonra kaldırdım.

    Yeni JavaScript dosyasını kendi sunucuna yüklediğin an sorun giderilmiş olacak.

    Kolay gelsin...

    YanıtlayınSil
  11. çok teşekkür ederim arkadaşım. Ne kadar yararlı oldu bilemessin. Tekrar ok teşekkürler...

    ayrıca bir sorum olacak:
    şu "yazının devamını okumak için tıkla" meselesini nasıl yaptın? :) şimdiden teşekkür ederim.

    ayrıca benim blog

    YanıtlayınSil
  12. Blogger'da Devamını Oku Bağlantısı Yapmak bu yazımı okursan soruna cevap olacaktır. "İstediğini Ara" kısmını aklına takılan sorular için kullanmanı tavsiye ederim. Çünkü Blogger hakkında güzel ipuçları var.

    YanıtlayınSil
  13. selam, benim sorunum, son yorumlar eklentimin bazı explorer(sanırım v. 6.0 da) tarayıclarında gözükmemesi...

    mozilla yahut 7.0 kullananlar rahatlıkla son yorumları görebilirken misal işyerimde esplorer 6.0 ile ben göremiyorum yorumları..1-2 arkadaşım daha aynı dertten muzadrip oldu.

    acaba versiyon ya da tarayıcı değişikliği yapmadan bir çözümü var mı bu durumun?

    teşekkürler..

    YanıtlayınSil
  14. @legrottaglie, dediğin sorunla ben de karşılaştım. Ama kullandığım bilgisayar şirket bilgisayarıydı ve filtre vardı. Büyük ihtimal ondan kaynaklanıyor. IE6 ile alakalı değil ;-)

    YanıtlayınSil
  15. Bu yorum yazar tarafından kaldırıldı.

    YanıtlayınSil
  16. merhaba blogla ilgili bilgilerin harika olmuş yabancı sitelerle ugrasmaktan kurtulduk son yorumlar eklentisini ekledim fakat bunu son yazılanlara uyarladıgımda kurabiye evi dediki diye cıkıyor bunu baslıklara göre nasıl düzenlerim yardımların için şimdiden tesekkürler

    YanıtlayınSil
  17. slm,blogunuz ve yazılarınız cok guzel..devamını okuyu da bloguma uyguladım..

    bende ekledım bunu bloguma ama bende boyle cıktı ?neden olabılır..yazı çıkmıyor bende.sadece altakı var..neyi eksik yaptım acaba..

    hayaled 06 Ekim tarihinde dedi ki:

    YanıtlayınSil
  18. @hayaled, senin blogunda 4 yazın var ve hepsinde sadece video var. Yazı girişi yok. Doğal olarak birşey yazmaması normal ;-)

    @kurabiye evi, JavaScript kodlanırken son yazılanlarda da tıpkı son yorumlarda olduğu gibi kimin hangi tarihte ne yazdığı bilgisinin gösterilmesi amaçlanmış. Eğer sadece başlığın ve içeriğin olmasını istiyorsan senin için bir daha kodlayabilirim. Ama unutma ki başlıklar görüntülenirken, başlık bilgisi direkt o yazının bulunduğu linkten alınacağı için başlığında tıpkı linkin gibi gözükecek.

    Örnek olarak Zencefilli Şeftalili Tart yazının linki http://kurabiyeevi.blogspot.com/2007/10/eftalili-tart.html şeklinde. Bu yüzden son yazılanlar kısmında yazının başlığı:
    eftalili tart şeklinde görüntülenecek. Bu yüzden bu yöntemi daha çok son yorumlar için kullanman daha iyi. Tabi sırf yazının başlığı olsun dediğin için söylüyorum.

    YanıtlayınSil
  19. Mafiamax alakan için gercekten cok tesekkür ederim sanırım türkce karakterler durumu bozuyor ama ben turkce karakterleri degiştirebilirim su an ki halinden daha iyi olacaktır eminim düzenlersen cok memnun olurum simdiden tesekkürler

    YanıtlayınSil
  20. ok,tesekkurler..ben sandım katagorı baslıklarını alıyor:)..

    şu ;

    (06 Ekim tarihinde dedi ki) yerını nasıl sılebılırım acaba?ne yapmam gerek...
    tesekkurler

    YanıtlayınSil
  21. @Kurabiye evi, tam olarak istediğini anlayabilmem için lütfen bu deneme sayfasına bakar mısın? Bu örnekte yazının başlığı ve içeriğinin bir bölümü var. Eğer istediğin buysa, sana yeni düzenlediğim JavaScript kodunu ve nasıl yapacağını anlatacağım.

    @hayaled, tarih bilgisini silmek istersen showcommentdate değerini false yapman yeterli.

    YanıtlayınSil
  22. evet arkadasım tamda istedigim bu sanırım baslıgın devamında gelecek harf durumunu kısaltabiliriz gercekten cok tesekkür ederim :)

    YanıtlayınSil
  23. Öyleyse işleme başlayabiliriz. Öncelikle size hazırladığım bu JavaScript dosyasını indirin ve GooglePages hesabınıza yükleyin. Çünkü siz aldıktan sonra sileceğim. Kendi sunucunuza yükledikten sonra yazımdaki ilk kod örneğinde olduğu gibi adres kısmına dosyanın sizin sunucunuzdaki adresini yazın.

    Yazıların özetlerinde ne kadar harf gösterileceği de sizin elinizde. numchars değerine kaç yazarsanız kadar karakter görüntülenir ;-)

    Haberiniz olsun dosyayı yarın sunucumdan kaldıracağım.

    YanıtlayınSil
  24. Dosyayı indirdim ve yükledim fakat bu konuda cok bilgim olmadıgı için tam olarak yapamadım sanırım :( biraz ugrasıcam bakalım yapabilecekmiyim cok tesekkür ederim

    YanıtlayınSil
  25. Tek yapman gereken ilk koddaki <-script src='http://kullanıcıadı.googlepages.com/sonyorumlar_tr.js' type='text/javascript'/-> yani bu koddaki eğik yazı tipi ile gösterdiğim adres yerine senin dosyayı yüklediğin adresi yaz. Eğer dediğim gibi googlepages'e yüklediysen bu adres:

    http://www.googlekullanıcıadın.googlepages.com/sonyorumlar2_tr.js olacak. Bu kadar basit!

    YanıtlayınSil
  26. aynen söyledigin gibi yaptım istersen bakabilirsin http://sevimalabas.googlepages.com ama olmuyor sorunu anlayamadım

    YanıtlayınSil
  27. @Kurabiyeevi, son yazdığım yazı ile senin ve de başkalarının işine yarayacak şekilde dosyayı güncelledim. Tam dediğim gibi yaparsan hiç bir sorun ile karşılaşmazsın ;-)

    YanıtlayınSil
  28. MaFiAMaX benim sorunum da bahsettiğin konuya çok benziyor.

    Bir yazıma yapılan yorumları sayfalar halinde nasıl gösterebilirim
    acaba;
    Örneğin yazıma yapılan toplam 30 yorum olsun. Ben yazımın altında
    sadece 10 tanesinin olmasını istiyorum, diğerlerine ise

    <---prev comments---next comments-->

    gibi linklerle erişmek istiyorum.Ya da

    1 of 3--- 2 of 3 ---3 of 3

    gibi bir sistem...

    ama istediğim şey sidebar gibi bir yerde yer almayacak, dediğim gibi yazımın altındaki yorumların sayısını ayarlamaktan bahsediyorum.

    Yardımcı olursanız çok sevinirim.
    Şimdiden teşekkürler...

    YanıtlayınSil
  29. MaFiAMaX gerçekten çok harika bir anlatım olmuş eline sağlık blogküre seninle aydınlanıyor çalışmalarının devamını dört gözle bekliyorum

    YanıtlayınSil
  30. http://mafiamax.googlepages.com/sonyorumlar_tr.js

    Link Patlamış:S
    Yenilersen sevinirim..

    YanıtlayınSil
  31. @ErDemir,
    Ben onu örnek olsun diye belirtmiştim. Dosyanın kendisi yazının sonuna doğru paylaşılmıştır. Örneği yanlış anlamışsınız.

    YanıtlayınSil
  32. Örneği yapmaya çalıştım fakat GooglePages, hizmeti kaldırılmış ve onun yerine GoogleSites var. Ancak onda da .js uzantılı dosya ekleyemiyoruz.. mümkünse ya ücretsiz sunucu adresi ya da bu JavaScript kodunun işe yarar linkini verebilirmisiniz. ayrıca anlatım için teşekkür ederim ...

    YanıtlayınSil
  33. @mÇakır,
    İlhgili habere ve yorumlardaki önerilere burdan ulaşabilirsiniz.

    YanıtlayınSil
  34. Sayın Mafiamax;
    JS dosyalarını officelive.com üzerinde sakladığınızı gördüm. Fakat benim JS dosyaları yüklememe izin vermedi. Acaba ücretli sürüm mü kullanıyorsunuz?
    Teşekkürler

    YanıtlayınSil
  35. @araba-cı,
    Office Live'ın farklı servisleri var. Ben smallbusiness servisini kullanıyorum. (Bu servis ile küçük çaplı işletmelerin web sitesi açması amaçlanmış.)

    Ücretli değil yani.

    YanıtlayınSil
  36. teşekkürler. ben de eklemek için bu eklentiyi arıyordum. iyi denk geldi.

    YanıtlayınSil
  37. Çok Teşekkürler.Çok iyi oldu =)

    YanıtlayınSil

Küfür ve hakaret içeren yorumları sevmiyor, Türkçe'nin doğru kullanıldığı yorumları ise çok seviyoruz.

HTML: <b>, <i>, <a> gibi temel HTML etiketlerini kullanabilirsiniz.
Uyarı: URL adresi belirtirken lütfen başına http:// protokolünü koymayı unutmayın!