AUXILIO: Intento hacer un tagcloud

Hola,

Estoy intentando hacer un tagcloud para mi sitio http://pazfuerzayalegria.net/

Empecé con este código

<BOUCLE_nube(MOTS){tout}{par titre}>

<BOUCLE_palabras(ARTICLES){id_mot}></BOUCLE_palabras>
<strong>
<font size="<?php $total="#TOTAL_BOUCLE"; echo
round($total/5+1); ?>" face="Tahoma"> <a class="nube" href="#URL_MOT"> #TITRE </a></font></strong>
<//B_palabras>
</BOUCLE_nube>

Que lo tomé del sitio de Metrodelegados. Funciona en el sentido más general del término se puede ver acá
http://pazfuerzayalegria.net/spip.php?page=tagcloud0

El grave problema de este bucle es que este bucle da un crecimiento continuo, por ahora que el máximo de palabras apariciones de una palabra clave en el sitio es de 30 y algo el máximo tamaño de letra que tengo es 7, pero con el crecimiento del sitio llegaré a tener tamaños imposibles...

La solución es que el estilo (el número) se relacione con algún otro parámetro, por ejemplo con el número total de palabras claves o mejor aun con el número Total de veces que se han asignado las palabras claves.

Más importante aun es que la relación no sea lineal porque lo que suele suceder es que la mayor parte de las palabras aparece un número muy discreto de veces pero otras aparecen muchísmo así que de neuvo tendremos una nube con unas pocas palabras con letras muy grandes y la mayoría muy pequeñas. Encontré este artículo sobre la parte conceptual, pero no entiendo el algoritmo (les recuerdo que no soy programador, me cuesta mucho trabajo PHP de Python no entiendo ni papa) http://thraxil.com/users/anders/posts/2005/12/13/scaling-tag-clouds/

Los bucles para calcular el número de palabras claves son sencillos:
<p>Este es el total de total de palabras clave del sitio
<BOUCLE_dos(MOTS){tout}></BOUCLE_dos>#TOTAL_BOUCLE<//B_dos></p>

<BOUCLE_grupos(GROUPES_MOTS){par titre}{tout}>Total de palabras clave en el grupo&nbsp; #TITRE:<BOUCLE_uno(MOTS){id_groupe}></BOUCLE_uno> #TOTAL_BOUCLE <//B_uno><br>
</BOUCLE_grupos>

He logrado modificar un poquito el bucle y pude calcular para cada palabra de las que me interesan que solo son las del grupo 2 "temas", que con los bucles de arriba dan lo que tengo en
http://pazfuerzayalegria.net/spip.php?page=tagcloud2

Pero hasta ahí llegué. Necesito ayuda para

1. Hacer un bucle que me calcule el número total de veces en se han puesto palabras claves a los artículos, en este caso suman como 300 y algo más, que es el total con el que tengo que contar, porque si trabajo con el total de palabras claves puede suceder que el número de veces que se ha puesto una palabra en particular sea mayor que ese total.
Intenté:

<BOUCLE_nube(MOTS){tout}{par titre}>
<BOUCLE_palabras(ARTICLES){id_mot}></BOUCLE_palabras>
<//B_palabras>
</BOUCLE_nube>#TOTAL_BOUCLE<//B_nube>

Pero no arroja nada ver http://pazfuerzayalegria.net/spip.php?page=tagcloud3

2. Necesito saber si puedo hacer con variables SPIP o con PHP cálculos matemáticos entre variables
en http://pazfuerzayalegria.net/spip.php?page=tagcloud1 tengo los totales pero no logro comparar de ninguna manera el valor de la tercera columna con el de la última (que por ahora es el total de palabras claves) que me daría un valor últil para darle valor los estilos

El bucle es
<BOUCLE_uno(MOTS){id_groupe=2}></BOUCLE_uno> #SET{valor,#TOTAL_BOUCLE} <//B_uno>
</BOUCLE_grupos>
<p>El total de palabras claves es #GET{valor}</p>

</B_nube>
<table>
<BOUCLE_nube(MOTS){par titre}{id_groupe=2}>
<tr>
<td>#COMPTEUR_BOUCLE</td>
<BOUCLE_palabras(ARTICLES){id_mot}></BOUCLE_palabras>
<td>#SET{num1,#TOTAL_BOUCLE}</td>
<td><a class="nube" href="#URL_MOT"> #TITRE </a></td>
<//B_palabras>
<td>#GET{num1}</td>
<td>#GET{valor}</td>
<td>#GET{num}</td>
</tr>
</BOUCLE_nube>
</table>
</B_nube>

Muchas gracias por su ayuda

Germán

--

Germán Bustos
Atarraya
tejedores de saber social
http://www.atarraya.org
german@atarraya.org Tel: [+57 1] 2481766 - [+57 3] 3102935185
Fax: [+57 1] 2481766

yo tengo hecha una por mi en www.colectivosolano.org y en www.zemos98.org.

Aquí lo tienes:

<style>
    #cloud {padding:1px; line-height:1em;text-align:center;}
    #cloud a {text-decoration:none;padding:0px;}
</style>
<div id="cloud">

    <BOUCLE_articulos(MOTS){tout}{par titre}>
       <BOUCLE_palabras(ARTICLES){id_mot}></BOUCLE_palabras>
          <?php
      $total="#TOTAL_BOUCLE";
      $freq=round($total/10+1);
      switch($freq){
         case 1:
      echo '<font style="font-size:0.7em;';
      break;
         case 2:
            echo '<font style="font-size:0.9em;';
      break;
         case 3:
      echo '<strong><font style="font-size:1.1em;';
            break;
         case 4:
            echo '<strong><font style="font-size:1.3em;';
      break;
         case 5:
            echo '<strong><font style="font-size:1.5em;';
      break;
         case 6:
      echo '<strong><font style="font-size:1.6em;';
            break;
         default:
      echo '<strong><font style="font-size:1.7em;';
      }
   ?>
" face="Arial"><a href="#URL_MOT" id="cloud">#TITRE</a></font></strong>
  <//B_palabras>
</BOUCLE_articulos>

</div>

También está la modificación que hizo Pablo Iranzo Gómez de alufis35.uv.es

<div class="featurebox">
<h3>
         <:mots_clefs:>
</h3>

         <?php $total=0; ?>
         <?php $numero=0; ?>
         <?php $max=0; ?>
         <BOUCLE_prearticulos(MOTS){type!=Design}{type!=Licencia}{par titre}>
                 <BOUCLE_prepalabras(ARTICLES){id_mot}></BOUCLE_prepalabras>
                         <?php $total=$total[+(#TOTAL_BOUCLE)]; ?>
                         <?php $numero=$numero+1; ?>
                         <?php if(#TOTAL_BOUCLE>$max){ $max=#TOTAL_BOUCLE;} ?>
                 <//B_prepalabras>
         </BOUCLE_prearticulos>
         <?php $media=$total/$numero; ?>
         <?php $desv=0; ?>
         <?php $parcial=0; ?>
         <?php $maxmin=0; ?>
         <BOUCLE_statarticulos(MOTS){type!=Design}{type!=Licencia}{par titre}>
<BOUCLE_statpalabras(ARTICLES){id_mot}></BOUCLE_statpalabras>
                         <?php if(#TOTAL_BOUCLE>$maxmin & #TOTAL_BOUCLE<$max)
                                 {
                                         $maxmin=#TOTAL_BOUCLE;
                                 }
                         ?>
                         <?php $total=$total+#TOTAL_BOUCLE; ?>
                         <?php $parcial=$parcial+(#TOTAL_BOUCLE-$media)*(#TOTAL_BOUCLE-$media); ?>
                 <//B_statpalabras>
         </BOUCLE_statarticulos>
         <?php $desv=sqrt($parcial/$numero); ?>
         <?php $palabros=0; ?>

<BOUCLE_articulos(MOTS){type!=Design}{type!=Licencia}{par titre}>
                 <BOUCLE_palabras(ARTICLES){id_mot}></BOUCLE_palabras>
                         <?php $tamanyo=#TOTAL_BOUCLE;?>
                         <?php if($tamanyo>$maxmin){ $tamanyo=$maxmin;}?>
                         <?php $pctj=round(250*$tamanyo/$maxmin,2); ?>
                         <a href="#URL_MOT" style="font-size:<?php echo $pctj;?>%">
                                 <?php
                                         if ($tamanyo>round(0.75*$media,2))
                                         {
                                                 echo "#TITRE";
                                         }
                                 ?>
                         </a>
                 <//B_palabras>
         </BOUCLE_articulos>
</div>

Espero que te sirva

saludos

Germán Bustos escribió:

Hola,

Estoy intentando hacer un tagcloud para mi sitio http://pazfuerzayalegria.net/

Empecé con este código

<BOUCLE_nube(MOTS){tout}{par titre}>

<BOUCLE_palabras(ARTICLES){id_mot}></BOUCLE_palabras>
<strong>
<font size="<?php $total="#TOTAL_BOUCLE"; echo
round($total/5+1); ?>" face="Tahoma"> <a class="nube" href="#URL_MOT"> #TITRE </a></font></strong>
<//B_palabras>
</BOUCLE_nube>

Que lo tomé del sitio de Metrodelegados. Funciona en el sentido más general del término se puede ver acá
http://pazfuerzayalegria.net/spip.php?page=tagcloud0

El grave problema de este bucle es que este bucle da un crecimiento continuo, por ahora que el máximo de palabras apariciones de una palabra clave en el sitio es de 30 y algo el máximo tamaño de letra que tengo es 7, pero con el crecimiento del sitio llegaré a tener tamaños imposibles...

La solución es que el estilo (el número) se relacione con algún otro parámetro, por ejemplo con el número total de palabras claves o mejor aun con el número Total de veces que se han asignado las palabras claves.

Más importante aun es que la relación no sea lineal porque lo que suele suceder es que la mayor parte de las palabras aparece un número muy discreto de veces pero otras aparecen muchísmo así que de neuvo tendremos una nube con unas pocas palabras con letras muy grandes y la mayoría muy pequeñas. Encontré este artículo sobre la parte conceptual, pero no entiendo el algoritmo (les recuerdo que no soy programador, me cuesta mucho trabajo PHP de Python no entiendo ni papa) scaling tag clouds

Los bucles para calcular el número de palabras claves son sencillos:
<p>Este es el total de total de palabras clave del sitio
<BOUCLE_dos(MOTS){tout}></BOUCLE_dos>#TOTAL_BOUCLE<//B_dos></p>

<BOUCLE_grupos(GROUPES_MOTS){par titre}{tout}>Total de palabras clave en el grupo&nbsp; #TITRE:<BOUCLE_uno(MOTS){id_groupe}></BOUCLE_uno> #TOTAL_BOUCLE <//B_uno><br>
</BOUCLE_grupos>

He logrado modificar un poquito el bucle y pude calcular para cada palabra de las que me interesan que solo son las del grupo 2 "temas", que con los bucles de arriba dan lo que tengo en
http://pazfuerzayalegria.net/spip.php?page=tagcloud2

Pero hasta ahí llegué. Necesito ayuda para

1. Hacer un bucle que me calcule el número total de veces en se han puesto palabras claves a los artículos, en este caso suman como 300 y algo más, que es el total con el que tengo que contar, porque si trabajo con el total de palabras claves puede suceder que el número de veces que se ha puesto una palabra en particular sea mayor que ese total.
Intenté:

<BOUCLE_nube(MOTS){tout}{par titre}>
<BOUCLE_palabras(ARTICLES){id_mot}></BOUCLE_palabras>
<//B_palabras>
</BOUCLE_nube>#TOTAL_BOUCLE<//B_nube>

Pero no arroja nada ver http://pazfuerzayalegria.net/spip.php?page=tagcloud3

2. Necesito saber si puedo hacer con variables SPIP o con PHP cálculos matemáticos entre variables
en http://pazfuerzayalegria.net/spip.php?page=tagcloud1 tengo los totales pero no logro comparar de ninguna manera el valor de la tercera columna con el de la última (que por ahora es el total de palabras claves) que me daría un valor últil para darle valor los estilos

El bucle es
<BOUCLE_uno(MOTS){id_groupe=2}></BOUCLE_uno> #SET{valor,#TOTAL_BOUCLE} <//B_uno>
</BOUCLE_grupos>
<p>El total de palabras claves es #GET{valor}</p>

</B_nube>
<table>
<BOUCLE_nube(MOTS){par titre}{id_groupe=2}>
<tr>
<td>#COMPTEUR_BOUCLE</td>
<BOUCLE_palabras(ARTICLES){id_mot}></BOUCLE_palabras>
<td>#SET{num1,#TOTAL_BOUCLE}</td>
<td><a class="nube" href="#URL_MOT"> #TITRE </a></td>
<//B_palabras>
<td>#GET{num1}</td>
<td>#GET{valor}</td>
<td>#GET{num}</td>
</tr>
</BOUCLE_nube>
</table>
</B_nube>

Muchas gracias por su ayuda

Germán

--

comcinco [arroba] zemos98 [punto] org
-------------------------------------------------------------
la cultura nos tiene que hacer libres
kulturak aske egin behar gaitu
culture have to make us free
NO + WAR