ProAkademi.NET
 
 Web Programlama Web Programlama
 Programlama Programlama
 Grafik Grafik
 Veri Tabanı Veri Tabanı
 İşletim Sistemleri İşletim Sistemleri
 Network Network
 Donanım Donanım
 Güvenlik Güvenlik
 Genel Konular Genel Konular
  KATEGORİLER
 
Kullanıcı Adı :
Şifre :
  ÜYE GIRISI
 
 
  Hakkımızda
  Forum
  Blog
  Haberler
  İpuçları
  Destekleyenler
  İletişim
  PROAKADEMİ.NET
 
Son Üye : altintakipci
Kayıtlı Üye : 521
  İSTATİSTİKLER
 
 
Ana Sayfa > Makale > Web Programlama > ASP.NET
 
ASP.NET ile Etiket Bulutu (Tag Cloud) Hazırlamak
 
Bu makalemizde hepimizin web sayfalarında gördüğü büyüklü küçüklü kelimelerin olduğu etiket bulutunun nasıl yapıldığını inceleyeceğiz.
 

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 yokJ

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ı...

protected void Page_Load(object sender, EventArgs e)

{

String browseUrl = Page.ResolveClientUrl("#");


CloudLiteral.Text = GetCloud(GetTestData(), "<a class= weight$weight$ href= " + browseUrl + "?tag=$urlencodetag$ >$tag$</a> ");

}

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.

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

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

 
Etiketler: etiket bulutu tag could
 
Yazar: Volkan Korkmaz
Tarih: 23.04.2009 19:20:17 | Okuma: 3761 | Oy: 0

EkleBunu Sosyal Paylaşım Butonu

Eklenmiş yorum bulunmuyor!

Yorum Ekle
Yorum eklemek için kayıtlı üye olmanız gerekiyor! Üye olmak için tıklayınız.

 
Copyright 2008 ProAkademi.NET (v 1.4) - Tüm hakları saklıdır.
Tasarım: Hüseyin YILDIRIM [AriSToR] // ZirveArt
Clicky Web Analytics
 
 
Buluton Yazilim ve Internet Hizmetleri