TEMMUZ4

Google TermCloud AJAX Api'si ile Etiket bulutu yapımı

Javascript kategorisinde | [ 977 ] kez okunmuş | [6] Yorum » | Yorum Yaz »

Bu konu ekleneli 3 ay'dan uzun bir süre geçmiş. Konu geçerliliğini kaybetmiş ve/veya içerdiği linkler yayında olmayabilir.

Google'ın apilerini inceledikçe google'a olan sempatim daha da artıyor. Ajax Vizualization Api galerisini incelerken, web 2.0 ile web sitelerin özellikle blogların neredeyse hepsinde gördüğümüz "Etiket Bulutu" (Tag Clouds) uygulaması konusunda bir ajax api olduğunu gördüm.

Bir çok webmaster forumunda bu konu hakkında sorular, çözüm önerileri, ücretli ve ücretsiz birçok uygulama/kod gördüm. Ama bu işin bu kadar rahat bir şekilde yapılabilmesi çok hoşuma gitti.

Aşağıda, termcloud isimli ajax apisinin kullanımı için bir örnek hazırladım. Normalda apinin kullanılması için asp yada php gibi dillerden birisine ihtiyaç duyulmuyor.
Ama ben kendi etiket sistemimi de paylaşmış olmak amacıyla asp ile birleştirdim ve çok güzel çalıştığını gördüm.

Gelelim kod yapısına

ilk olarak aşağıdaki kod bloğunu <head>..</head> etiketleri arasına yerleştiriyoruz.


// normalde css dosyası da direk google'dan çalışabiliyor fakat ben renkleri istediğim gibi düzenlemek amaçlı kendi hostumda tutmayı uygun gördüm
<link rel="stylesheet" type="text/css" href="tc.css"/>
<script type="text/javascript" src="http://visapi-gadgets.googlecode.com/svn/trunk/termcloud/tc.js"></script>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>

Daha sonra aşağıdaki javascript + asp karışımı kodu <body> ... </body> tagları arasında etiket bulutunuzun görünmesini istediğiniz yere yerleştiriyoruz.



 <div id="tcdiv"></div>
    <script type="text/javascript">
      google.load("visualization", "1");
      google.setOnLoadCallback(draw);
      function draw() {
        data = new google.visualization.DataTable();
        data.addColumn('string', 'Label'); // etiketimiz
        data.addColumn('number', 'Value'); // etiketin hiti, kullanım sayısı ... gibi rakamsal bilgi
        data.addColumn('string', 'Link');  // tıklanması durumunda gidilecek url
<%
 ' // Aşağıda etiketleri tuttuğum tablodan rastgele 50 etiketi seçip kullanmak için yazdığım döngü bulunuyor.
 ' // bu arada veritabanındaki bir tablodan verileri rastgele almak için gereken koduda paylaşmış olduk :)
 Set objRs = Server.CreateObject("ADODb.RecordSet")
 strSQL = "SELECT TOP 50 * FRom tblEtiketler ORDER BY Rnd(-(1000*fldEtiketID)*Time())"
 objRs.Open strSQL, objConn, 1, 3
  if Not objRs.EOF Then 
%>
 // aşağıda etiket bulunda kaç etiket kullanacağımızı belirtiyoruz
        data.addRows(<% =objRs.RecordCount %>);

 

 // ayrıca bir döngüyle apiye vermek istediğimiz bilgileri oluşturuyoruz
 // 3 parametre kullanıyoruz. Yukarıda belirtmiştik.
 // ilk parametre "etiketimiz",
 // 2. parametre "Etiketin hit, yada kullanım sayısı" - Rakamsal veri olacak
 // 3. ve son parametre "Etikete tıklanınca gidilecek url"

<%  
   i = 0
   Do While Not objRs.EOF
%>

        data.setValue(<% =i %>, 0, '<% =objRs("fldEtiket") %>');
        data.setValue(<% =i %>, 1, <% =objRs("fldEtiketSayac") %>);
        data.setValue(<% =i %>, 2, 'http://www.ismailkaplan.com/etiket/<% =objRs("fldEtiket") %>');
<%
   objRs.MoveNext
   i = i+1
   Loop
  end if
 objRs.Close
 Set objRs =nothing %>


 // etiket bulutumuzu oluşturacak bölüm bitti

 // aşağıda bulutumuzun görüntüleneceği div'in adını yazıyoruz.
 // div'in adını değiştirmeniz durumunda css dosyasındada ilgili alanı değiştirmek gerekir
        var outputDiv = document.getElementById('tcdiv');
        var tc = new TermCloud(outputDiv);
        tc.draw(data, null);
      }
    </script>

bu kadar.

Bu işlemleri bitirdiğiniz zaman neye sahip olacaksınız ?

  • Kodların çalışan halini görmek için tıklayın.
  • Kodların çalışan halini indirmek için tıklayın. (Veritabanı, ve diğer gerekli dosyalar içindedir, Lütfen virüz programınız ile kontrol ediniz. Ben kontrol ettim ama bu günlerde pek güven olmuyor)

Elimden geldiğince google'ın bu işleri kolaylaştıran apileri ve diğer uygulamalarını paylaşmaya devam edicem.

Yorumlar

çiçekçi | 7/25/2010 6:01:20 PM
merhaba, çok teşekkürler tam aradğım etiket bulutu.. inşallah sitemizdeki kodlar ile bi çakışması olmaz. iyi çalışmalar
Karton Poşet | 7/19/2010 11:23:01 PM
kaç zamandır arıyordum :)= saolasın hocam
Personel Taşımacılığı | 7/19/2010 11:22:26 PM
teşekkürler yardımlar için.
personel servisi | 5/13/2010 3:10:24 PM
güzel bir çalışma
UfukArt | 4/27/2010 1:25:54 PM
Rnd(-(1000*ID)*Time())
sql ile yapmak istedim. bu kısımda hata veriyor.
Can Çolpan | 8/24/2009 10:51:25 AM
ÜStad elinize sağlık. Paylaşım için teşekkür ederim.

Konu hakkında düşüncelerinizi paylaşın

İsim / Nick

E-posta (Görüntülenmeyecektir)

web sitesi

Güvenlik Kodu Yandaki rakamları aşağıdaki kutuya yazınız