Mittwoch, 12. März 2008

Tagcloud auf blogger/blogspot

Seit einiger Zeit zeige ich ja im Sidebar des Blogs die Tagcloud an. Der Code dafür stammt von phydeaux3 und wurde hier auf seinem Blog veröffentlicht. Das ganze hat hier bei mir ohne Probleme funktioniert.
Allerdings wollte ich gezielt einige Tags nicht anzeigen, da sie deutlich zu oft vorkommen und nicht wirklich sinnvoll sind, sondern eher der Erzeugung von Kategorien hier im Blog dienen (z.B.: MyTunedCar oder auch Lieblings...). Dazu hab ich den original Code etwas abgeändert, damit man diese an zentraler Stelle ausblenden kann.

Anmerkung: Nicht erschrecken, im Javascript-Code werden Entitäten (wie bsp.: <, > und ") als Html-Entitäten dargestellt (also <, > und "e; im Beispiel). Das muss so sein, Blogspot/Blogger setzt das dann automatisch korrekt um.

Als erstes muss man natürlich das entsprechende Widget installieren. Wie das funktioniert steht hier bzw. direkt hier. Danach kann man dann den Code anpassen ,-)

Im Script oben in der head-Section muss eine neue, globale Variable deklariert werden, die alle Tags enthält, die nicht angezeigt werden sollen. Wir verwenden hier (für möglichst schnelle Zugriffszeiten) ein Assoziatives Array.

// ...
var lcShowCount = false;

// Add tags that should NOT be shown in the cloud (this part is NEW)
var excludedTags = new Array();
excludedTags[
"e;mytunedcar"e;] = true;
excludedTags["e;lieblings
"e;] = true;

Hiermit haben wir jetzt also gesagt, dass die Tags "mytunedcar" und "lieblings" nicht angezeigt werden sollen.
Jetzt müssen wir noch den Code-Teil ändern, der die Tags dann tatsächlich anzeigt. Der befindet sich weiter unten im Template. (Falls dort kein JS-Code angezeigt wird, oben das Kontrollkästchen "Vorlagen zum Erweitern von Widgets" aktivieren, dann sollte er angezeigt werden. Die Codestelle, die wir suchen sieht momentan in etwa so aus:

for(var t in ts){
if(ts[t] < cloudMin){
continue;
}
for (var i=0;3 > i;i++) {

Hier fügen wir jetzt folgende Zeile dazu"if(excludedTags[t] == true){ continue; }", so dass das ganze dann so aussieht

for(var t in ts){
if(ts[t] < cloudMin){
continue;
}
if(excludedTags[t] == true){ continue; }
for (var i=0;3 > i;i++) {

Damit wird nichts anderes erreicht, als dass wir den entsprechenden Tageintrag genau dann in der anzeigenden Schleife überspringen, wenn wir oben ihm gesagt haben, dass das tag nicht angezeigt werden soll.

Achtung: Dieser Code berücksichtigt Groß- und Kleinschreibung. Sollte ein Tag also doch angezeigt werden, obwohl ihr es vermeintlich ausgeschlossen habt, dann liegt das ziemlich sicher daran, dass ihr es oben in der head-Section falsch geschrieben habt.

Keine Kommentare:

Kommentar posten

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.