Como crear una nube de tags con PHP
Para crear nuestra nube de etiquetas con PHP vamos a utilizar la clase PHP Tag cloud creada por lotsofcode.
Os voy a poner a continuación un ejemplo que utilicé una vez en el desarrollo de una página que necesitaba una nube de etiquetas:
CSS
:link { text-decoration: none;} :visited { text-decoration:none;} a{ color:#88D6FF; } .tagg span{ margin-right:8px; } a:hover{ text-decoration:underline; } #tagcloud_1 { font-family: "Arial"; opacity: .5; font-size: 12pt; line-height: 18pt; } #tagcloud_2 { font-family: "Arial"; opacity: .5; font-size: 13pt; line-height: 18pt; } #tagcloud_3 { font-family: "Arial"; opacity: .5; font-size: 14pt; line-height: 18pt; } #tagcloud_4 { font-family: "Arial"; opacity: .5; font-size: 15pt; line-height: 18pt; } #tagcloud_5 { font-family: "Arial"; opacity: .5; font-size: 16pt; line-height: 18pt; } #tagcloud_6 { font-family: "Arial"; opacity: .6; font-size: 17pt; line-height: 18pt; } #tagcloud_7 { font-family: "Arial"; opacity: .7; font-size: 18pt; line-height: 18pt; } #tagcloud_8 { font-family: "Arial"; opacity: .8; font-size: 19pt; line-height: 18pt; } #tagcloud_9 { font-family: "Arial"; opacity: .9; font-size: 20pt; line-height: 18pt; } #tagcloud_10 { font-family: "Arial"; font-size: 21pt; line-height: 18pt; }
PHP
include("TagCloud.php"); include("conexion.php"); class tags{ public $mysql; function tags(){ $this->mysql = new conectarMySQL(); $this->mysql->conectar(); } function obtener(){ $sql = $this->mysql->consultar("SELECT tags FROM tabla"); if($sql == true){ $full_tags = ""; while($row = $this->mysql->obtener_consulta()){ $tag = $row['tags']; //comprobamos que el último caracter sea una coma. $pos = strlen($row['tags']) - 1; //si el último caracter no es una coma, se la ponemos. if($tag[$pos] != ","){ $tag = $tag.","; } $full_tags = $full_tags." ".$tag; } //remplazamos posibles errores $full_tags = str_replace(", ",",",$full_tags); $full_tags = str_replace(",,",",",$full_tags); //limpiamos la primera coma $full_tags = substr($full_tags,1,strlen($full_tags)); //separamos los tags uno a uno en un array $array_tags = explode(",", $full_tags); return $array_tags; }else{ echo "error ".mysql_error(); } } } //instanciamos la clase $f = new tags(); //creamos el array con los tags $array = $f->obtener(); //cremos la nube de etiquetas con nuestros tags $o = new Cal_TagCloud($array); //personalizamos la nube de etiquetas $o->setmaxTags(25) ->setShowScore('score') ->setLink('http://www.tuweb.com/tag/%s') ->buildCloud(); //mostramos la nube de etiquetas echo $o->outputCloud;
El archivo conexión.php es una clase que utilizo para hacer las conexiones y consultas con la base de datos, para obtener esta clase puedes ver el artículo de Instanciar una clase dentro de otra en PHP 5, puesto que es el mismo archivo Conexión.php que tiene esa entrada.