CakePHP – Cómo hacer un contador de visitas

Desde hace unos meses estoy programando con CakePHP y no deja de asombrarme su simplicidad y su potencia a la hora de programar cualquier aplicación web. Haciendo mi portfolio, se me ocurrió la idea de montar un contador de clics para mis diferentes trabajos, de manera tal que cuando un usuario haga clic en un trabajo para lanzar la URL, el sistema registra ese clic en la base de datos.

Cómo se haría esto?, fácil:

<?php

/* Esto es un metodo del controlador, por tanto, debera estar en app/controllers/controller.php

// Metodo para lanzar una URL del portfolio sumando uno a las visitas que ya tenia
public function getURL($id) {

     // Lo defino en false para no renderizar la vista
     $this->autoRender = false;
		
     // Busco el registro correspondiente a la id recibida
     $register = $this->Portfolio->find("first", 
                                   array("conditions" => array("Portfolio.id" => $id)));
		
     // Recupero la id
     $this->Portfolio->id = $id;
		
     // Sumo uno a las visitas
     $visitas = $register['Portfolio']['visitas'] + 1;

     // Guardo los datos
     if ($this->Portfolio->saveField('visitas', $visitas)) {
			
          // Lanzo la URL
          $this->redirect($register['Portfolio']['enlace']);
     }	
}

?>

De esta manera, cuando alguien haga clic sobre uno de mis proyectos, primero lo localizo, después le sumo uno a las visitas y después utilizo el método redirect para redirigirlo a la URL del proyecto que ha elegido.

Para usar este método, en la vista habrá que montar el link de la siguiente manera:

<?php

// Sobre el enlace HTML, definimos el nombre del controlador, la accion, y el registro
<a href="<?php echo $html->url(array('controller' => 'Name',
                                     'action' => 'getURL', 
                                     $register['Portfolio']['id'])); ?>" target="_blank">Link</a>

?>

De esta manera, ya podemos saber cuántos clics recibe un vínculo de nuestra web.

Referencia CakePHP Cookbook

Anuncios
A %d blogueros les gusta esto: