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

Creando un ámbito de trabajo

Desde hace unos años estoy programando en PHP tanto para empresas como para mí particularmente. Gracias a dios, desde entonces nunca me ha faltado trabajo y he estado en empresas grandes al pie del cañón (Cajasol, Sadiel…).

En mi experiencia he pasado a programar desde el notepad hasta en linux, pasando por frontpage, dreamweaver, notepad++, incluso microsoft word. Ahora puedo presumir de tener una buena base para poder decidir qué necesito para desarrollar bien mi trabajo, para organizar mi tiempo e intentar ser lo más productivo posible.

Esta es mi opción para poder desarrollar sin contratiempos y con la máxima eficacia:

  1. A nivel de hardware, procesador de cuatro núcleos intel core duo 2 a 2.2ghz.
  2. Memoria DD3 a 1.333mhz. Un total de 8ghz.
  3. Un buen monitor de 21 pulgadas (con uno sobra, aunque a mucha gente les guste tener dos, yo lo probé en su día y me sobró uno al tener expose o multiescritorios).
  4. A nivel de software, sistema operativo Linux, por mi parte, Ubuntu 11.04.
  5. Paquete Apache 2, MySQL, phpMyAdmin y PHP5.
  6. Para la gestión de bases de datos MySQL, phpMyAdmin y MySQL Workbench (fundamental para los modelos de datos).
  7. Para picar código, Gedit, el editor de código de Ubuntu.
  8. Web browser, sin duda alguna, Firefox.
  9. Para la comunicacion entre el entorno de desarrollo y el de producción, conexión SSH directo al servidor o en su defecto, FileZilla (cliente FTP).
  10. Para testear las aplicaciones en windows con Iexplorer en todas sus dichosas versiones, una máquina virtual. Yo uso Virtual Box.
  11. Para el control de versiones y archivos, Subversion.
  12. Para backups, una opción es Dropbox (por lo menos a mí me parece bastante buena, desde mi total ignorancia).
  13. Para gestionar las tareas pendientes, incidencias y desarrollos de un proyecto, una aplicación de código abierto hecha en PHP y gratis: Mantis Bug Tracker.
  14. Y por último pero menos importante, el framework que utilizo es CakePHP.

En cuanto a la configuración local, al tener Linux es mucho más cómodo. Puedes editar los hosts y los espacios virtuales de una forma muy rápida y sencilla. Sinceramente, si alguien quiere abrirse camino en este complicado mundo, yo creo que esta es la base para poder trabajar en un entorno profesional y productivo.

¿Y vosotros?, ¿cómo lo tenéis montado?, me encantaría saber cuál es vuestra opinión y de qué forma trabajáis para la web.

Instalar Ubuntu
Instalar el paquete Apache, MySQL y PHP para Ubuntu
Instalar Firefox 4 para Ubuntu
Instalar MySQL Workbench
Conexión SSH a servidor
Instalar FileZilla Ubuntu
Instalar Virtual Box
Instalar Subversion Ubuntu
Instalar Dropbox
Instalar Mantis Bug Tracker
Instalar CakePHP

A %d blogueros les gusta esto: