Makale Özeti

Makalelerimizin arama motorlarında daha kolay bulunabilmeleri için Tag(Etiket) ‘ler ekleriz. Bir araya getirilen etiketler, genellikle bir kelimeler öbeği şeklinde web sayfalarında bir arada gösterilir ve buna da “etiket bulutu” denir. Kelimelerin fontları ne kadar büyükse, söz konusu kelime o kadar çok yazılarda aranmıştır. Bu da konunun popülerlik durumunun bir göstergesidir.

Makale

Giriş

 Makalelerimizin arama motorlarında daha kolay bulunabilmeleri için Tag(Etiket) ‘ler ekleriz. Bir araya getirilen etiketler, genellikle bir kelimeler öbeği şeklinde web sayfalarında bir arada gösterilir ve buna da “etiket bulutu” denir. Kelimelerin fontları ne kadar büyükse, söz konusu kelime o kadar çok yazılarda aranmıştır. Bu da konunun popülerlik durumunun bir göstergesidir.

Bu makalemizde hepimizin web sayfalarında gördüğü etiket bulutunun nasıl yapıldığını inceleyeceğiz.
 

Hadi Başlayalım
 

Visual Studio 2005’i açıp EtiketBulutu adında bir Web Projesi oluşturuyoruz.

Ardından da etiket bulutumuzda kullanacağımız kelimelerin bulunduğu bir test datası oluşturalım.
 


 
protected DataTable GetTestData()
   
 
{
         
DataTable tagData = new DataTable("tags");
       
tagData.Columns.Add(new DataColumn("tag"));
       
 
tagData.Columns.Add(new DataColumn("count", typeof(Int32)));
         
 
DataRow newRow;
       

string[] testData = new string[] { "asp.net", "atlas", "authentication", "Beta", "c#", "clr", "dataset", "date", "datetime", "dojo", "encryption", "excel", "favicon", "filesystem", "fileupload", "fulltext", "gdi", "get", "GPS", "gridview", "Hardware", "html", "HTTP", "httpget", "httphandler", "httpheader", "httppost", "ienumerable", "IIS7", "input", "intellisence", "javascript", "mdf", "Navigation", "POST", "recursion", "regex", "resolution", "Security", "seo", "serialize", "sitemap", "sql", "SQLServer2005", "stored procedure", "Strongly Typed Dataset", "t-sql", "templates", "threading", "time", "url", "vb.net", "Vista", "VMWare", "vs2005", "web2", "webservice", "windows", "forms", "xml" };
       
  

Random
rnd = new Random((int)(DateTime.Now.Ticks) / 1000);
         
foreach (string word in testData)
       
{
           
 
newRow = tagData.Rows.Add();
           
newRow["tag"] = word;
           
newRow["count"] = (rnd.Next() / 1000000);
       
}
         
 
return tagData;
   
}

 
Şimdi çektiğimiz bu datayı şekillendirme zamanı geldi.
 

private
string GetCloud(DataTable tagData, string cloudTemplate)    
 
{
       
// Gelen kolonları kontrol edelim

       
if (!tagData.Columns.Contains("tag"))
           
throw new Exception("Hata : 'tag'");         
if (!tagData.Columns.Contains("count"))
 
            throw new Exception("Hata : 'count'");
 
          StringBuilder outputBuffer = new StringBuilder();
 
        double max = 0;
 
        double min = 0;
 
        // Şimdi de kelime tekrarında min ve max değerleri bulalım  
      
double.TryParse(tagData.Compute("min(count)", null).ToString(), out min);
 
        double.TryParse(tagData.Compute("max(count)", null).ToString(), out max);
 
          // Şimdi de datalarımızı doldurduğumuz datatable içinde dönerek değerlerimizi şekillendirelim  
       
foreach (DataRow row in tagData.Rows)
 
        {            
/ Şimdi kelimelerimizi şekillendirirken kullanacağımız büyüklük ayarlarını yapalım
           
 
double weightPercent = (double.Parse(row["count"].ToString()) / max) * 100;
           
int weight = 0;
             
if
(weightPercent >= 99)
           
 
{
               
//en büyüğü
               
weight = 1;
            }  
          
else if (weightPercent >= 70)
 
            {
               
weight = 2;
 
            }
           
else if (weightPercent >= 40)
           
{
 
                weight = 3;
 
            }
           
else if (weightPercent >= 20)
            {
 
                weight = 4;
            }
 
            else if (weightPercent >= 3)
            {
 
                //en küçüğü
               
weight = 5;
           
}
 
            else
           
{
               
// kelime tekrar etmediyse o zaman gözükmesine de gerek yok
J
 
                weight = 0;
            }
 
            if (weight > 0)
               
outputBuffer.Append(cloudTemplate.Replace("$weight$", weight.ToString()).Replace("$tag$", row["tag"].ToString()).Replace("$urlencodetag$", HttpUtility.UrlEncode(row["tag"].ToString())));
        }
 
          return outputBuffer.ToString();
  
}

 
Bunları yaptıktan sonra verilerimizi göstermek için sayfanıza altta ki kodu ekleyiniz.  
<div id="tagCloud">       <asp:Literal ID="CloudLiteral" runat="server" /> </div>

 
Şimdi de bunu yükleme zamanı J  
  Yukarıda yazan kod bloğunda da gördüğünüz üzere yaptıklarımızı StyleSheet ile destekleyip bir de link vericez.. Style Sheet dosyamızıda aşağıdaki  gibi hazırlıyoruz.

 
 
#tagCloud
{
 
    width:250px;
 
    border:solid 1px #ccc;
    padding:5px;
 
    margin-bottom:10px;
 
    text-align:justify;
 
}

 
#tagCloud A
{
   
text-decoration:none;
 
    margin-left:5px;
 
    margin-right:5px;
 
    font-family:Trebuchet MS, Verdana, Arial;
 
    text-transform:lowercase;

 
}  

 
#tagCloud A:hover
 
{
 
    color:#00cc00;
 
    text-decoration:underline;
 
}

 
  #tagCloud A.weight1
 
{
   
color: #ff9900;
    font-size: 1.9em;
 
    font-weight:bolder;
 
}

#tagCloud
A.weight2
 
{
   
color: #4169e1;
 
    font-size:1.5em;
    font-weight:bolder;

 
}

#tagCloud A.weight3
{
   
color
: #009eff;
    font-size: 1.4em;
   
font-weight:bolder;

 
}

 
#tagCloud A.weight4

{
   

color: #4188cf;
 
    font-size: 1.2em;
 
}

#tagCloud A.weight5
 
{
 
    color: #83bcd8;
    font-size: 1.0em;
 
}

 
  Bu kadar zahmete girdik ve kod yazdık ve artık bizim de bir Etiket Bulutumuz var J  
asp.net atlas authentication Beta c# clr dataset date datetime dojo encryption excel favicon filesystem fileupload fulltext get GPS gridview Hardware html HTTP httpget httpheader httppost ienumerable IIS7 input intellisence javascript mdf Navigation POST recursion regex resolution Security seo serialize sitemap sql SQLServer2005 stored procedure Strongly Typed Dataset t-sql templates threading time url vb.net Vista VMWare vs2005 web2 webservice windows forms xml
 
Başka bir makalemde görüşmek dileğiyle...

Volkan KORKMAZ
Microsoft Certified Business Management Solutions Specialist
volkankorkmaz@gmail.com
http://www.volkankorkmaz.net