Byggde mitt första taggmoln idag

Taggmoln på min bloggNog för att tag clouds börjar dö ut på många sajter till förmån för mer klassiska tekniker, men efterdagens kodmangel på EPiServer Tech Forum så kände jag för att koda lite 😀

Resultatet ser du på bild här till höger, och för all del för stunden på samtliga bloggsidor på denna webbplats.

Vet inte om jag valde den snyggaste metoden, men kolla gärna nedan och kommentera om det ser ut som skit.

I databasen

Det finns en tabell jag använder för konfiguration och har följande aktuella fält:

  • ID – INTEGER/Autoincrement
  • Identifier – VARCHAR
  • Value – INTEGER
  • TxtValue – TINYTEXT

Exempel på data i tabellen:

  • ID = 8755 (har inget med något att göra, typ)
  • Identifier = SitemapTags (identifierar att det är ett inlägg om taggar i denna tabellen som också innehåller annat)
  • Value = 23 (alltså antalet referenser till just denna tag)
  • TxtValue = Adobe (själva taggen)

I tabellen ligger också en extra post, förutom alla lagrade taggar, som innehåller antalet referenser som den högst rankade taggen har. I dagsläget alltså Hack som av någon anledning leder med 27 referenstaggar i bloggen.

I usercontrolen där taggarna/etiketterna hämtas ut

Först och främst så sorteras bara de 20 populäraste taggarna ut. Här kan du se en förenkling av koden som hämtar ut allt:

StringBuilder sb = new StringBuilder();
OdbcConnection conn = new OdbcConnection(DIN CONNECTIONSTRING);
OdbcCommand comm = new OdbcCommand("SELECT TxtValue, Value FROM TABELLNAMN WHERE Identifier=´SitemapTags´ ORDER BY Value DESC LIMIT 0,20", conn);
OdbcDataReader RS;
conn.Open();
RS = comm.ExecuteReader();
comm.Dispose();

List<string> listCol = new List<string>();
double maxTagReferenced = Convert.ToDouble(HÄR HÄMTAR DU UT value FÖR POSTEN MED Identifier=´SitemapTagsMaxCount´);

while (RS.Read()) {
	double actualTagMention = Convert.ToDouble(RS.GetValue(1));
	double sizeCalc = ((actualTagMention / maxTagReferenced) * 100) + 50;
	int size = Convert.ToInt32(sizeCalc);
	listCol.Add("<a href="/tags/?tag=" + Server.UrlEncode(RS.GetValue(0).ToString()) + "" title="" + RS.GetValue(0).ToString() + "" style="font-size: " + size.ToString() + "%">" + RS.GetValue(0).ToString() + "</a>, ");
}
conn.Close();
conn.Dispose();
RS.Close();
RS.Dispose();

listCol.Sort();

foreach(string item in listCol) {
	sb.Append(item);
}
divMenu.InnerHtml = sb.ToString();

Är det något du skulle gjort bättre?

Leave a Reply

Your email address will not be published. Required fields are marked *