nube de etiquetas pequeña y con contador de nodos.

<?php
class tag
{
    var
$name = "";
    var
$count = 0;
    var
$tid = 0;

    function
getCount()
    {
        return
$this->count;
    }
    function
getName()
    {
        return
$this->name;
    }
    function
setCount($var)
    {
       
$this->count = $var;
    }
    function
setName($var)
    {
       
$this->name = $var;
    }
    function
setTID($var)
    {
       
$this->tid = $var;
    }
    function
getTID()
    {
        return
$this->tid;
    }

}
$count = 0; // Overall count of used tags
$threshold = 1; // How many tags are needed to get displayed
$font_size = 0.8;
$query = "SELECT d.name,d.tid FROM {term_data} d, {term_node} dn WHERE dn.tid=d.tid;";
$result = db_query($query);
$tags['Test'] = 0;
while(
$node = db_fetch_array($result))
{
    if (
$tags[$node['name']] == NULL)
    {
       
$tags[$node['name']] = new tag();
       
$tags[$node['name']]->setName($node['name']);
       
$tags[$node['name']]->setCount(1);
       
$tags[$node['name']]->setTID($node['tid']);
       
$count = $count + 1;
    }
    else
    {
       
$tags[$node['name']]->setCount(
           
$tags[$node['name']]->getCount() + 1
       
);
       
$count = $count + 1;
    }
}
foreach(
$tags as $tag)
{
   
$mycount = $tag->count;
    if(
$mycount > $threshold)
    {
       
$fraction = ((int)(($mycount / $count) * 60)) / 10;
        if(
$fraction < $font_size)
        {
           
$fraction = $font_size;
        }
        echo
'<span style="font-size: ' . $fraction . 'em;">' . l($tag->name,'taxonomy/term/' . $tag->tid,array('title="' . $tag->count . ' Nodes"')).'[' .$tag->count .']</span> ';
    }
}
?>

Yo lo tengo funcionando en un drupal 5.2 en mi url.

Ojo, estoy viendo que drupal no interpreta bien las etiquetas code, y se esta comiendo partes del mismo, así que he subido un txt con el código.

Oskar

http://drupal.documentados.com

editado:

para conseguir una nube de etiquetas de un uno o varios vocabularios lo que demos de hacer es modificar la consulta a la base de datos de la siguiente manera.

$query = "SELECT d.name,d.tid FROM {term_data} d, {term_node} dn WHERE dn.tid=d.tid and d.vid='6';";

si os fijáis he añadido al final un and y un valor exacto, lo que hace que la consulta además de todo lo pregunta me coja los términos del vocabulario número 6.
Obviamente si queremos mostrar los términos de varios vocabularios se crearían sucesivos and cada uno con el número del vocabulario de esta manera:
$query = "SELECT d.name,d.tid FROM {term_data} d, {term_node} dn WHERE dn.tid=d.tid and d.vid='6' and d.vid='8' and d.vid='10';";

Un saludo