Diseño y programación de un portfolio web con CakePHP

Una de las secciones que más he cuidado de dejandomarcas.com v2.0 es el portfolio. Al programar con CakePHP he podido diseñar un controlador que me obtenga todos los datos de mis trabajos de forma clara y ordenada, dejando a la vista que se encargue de cómo quiero mostrarlo en pantalla.

A continuación voy a explicar cómo lo he hecho, tanto el código del controlador, como el diseño de la vista, para que si quereis montar una galería de imágenes o un portfolio personal, podais hacerlo de una forma sencilla, siempre utilizando CakePHP, así aprendemos un poquito de este maravilloso framework.

Creo el modelo -> app/models/portfolio.php

<?php 

// Este es el modelo que uso para trabajar con la bd
class Portfolio extends AppModel {
	
  // Nombre modelo
  public $name = 'Portfolio';
	
  // Nombre tabla BD
  public $useTable = 'portfolio';

  // Campo de ordenación por defecto
  public $order = 'Portfolio.id DESC';
	
  // Usado para la validacion de los datos de entrada dentro del panel de administracion
  public $validate = array(
    'nombre' => array('required' => array('rule' => 'notEmpty', 'message' => 'name can not be empty')),
    'descripcion' => array('required' => array('rule' => 'notEmpty', 'message' => 'description can not be empty'))
  );
}

?>

Creo el controlador -> app/controllers/home_controller.php


<?php

class HomeController extends AppController {

  // Nombre controlador
  public $name = 'Home';

  // Modelos empleados
  public $uses = array('Portfolio');

  // Disposición de diseño por defecto
  public $layout = 'main';

  // Componentes utilizados	
  public $components = array('String');

  // Helpers utilizados
  public $helpers = array('String');

  /* METODOS PUBLICOS */
	
  // Indice de trabajos
  public function index() {
	
    // Busco todos los registros
    $registers = $this->Portfolio->find("all", array("conditions" => array("Portfolio.ver" => 1)));
				
    // Seteo el registro y los medios
    $this->set('registers', $registers);
  }
	
  // Metodo para lanzar una URL del portfolio sumando uno a las visitas que ya tenia
  public function getURL($id) {

    // No renderizo 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']);
    }
  }
}
?>

Y por último, la vista -> app/views/themed/default/home/index.ctp


<div id="bread">
  <?php echo $html->image('main/blue-folder-open-document.png')?><?php echo __('latest works');?>
</div>
<?php
  // Recorro los registros del controlador
  foreach ($registers as $register) {
?>
  <div class="project">
    <div class="box">
      <a href="<?php echo $html->url(array('controller' => 'home', 'action' => 'getURL', $register['Portfolio']['id'])); ?>" target="_blank">
        <?php echo $html->image($register['Portfolio']['imagen'], array('alt' => __($register['Portfolio']['nombre'], true)))?>			
      </a>
    </div>
    <h2><?php echo $register['Portfolio']['nombre'];?></h2>
    <p>» <?php echo utf8_encode($register['Portfolio']['descripcion']);?></p>
  </div>
<?php
}
?>

Con estos tres archivos ya tengo declarado el modelo de datos que voy a utilizar junto con sus validaciones para el panel de administración, el controlador que me ayuda a declarar todos los métodos para gestionar los datos, y por último, la vista, que mostrará en pantalla los datos obtenidos.

El resultado es el que veis en http://www.dejandomarcas.com/index.php/home

¿Tenéis dudas?, pues animaros y comentar!

background-image: ese gran aliado

Un factor importante a la hora de diseñar nuestra web es el background. Yo siempre opto por un color sólido, pero es cierto que a veces queda mejor un pequeño pattern con una imagen simple. El efecto queda perfecto: imagen de poco tamaño, totalmente personalizable, acorde con el css de nuestro layout, y totalmente compatible con cualquier navegador.

¿Cómo puedo conseguir un pattern atractivo sin necesidad de volverme loco con Photoshop?, fácil, visitando AVA7 Patterns, una magnífica web que pone a nuestra disposición cientos y cientos de formas de crear nuestro patrón.

Espero que también os guste :)

¿Necesitas inspiración?

Es cierto que a la hora de diseñar un formulario, un layout, un header, y un larguísimo etc. para cualquiera de nuestros proyectos necesitamos inspirarnos en algo para poder encontrar ese diseño sólido que andamos buscando.

Durante muchos años, páginas como cssmania o csszendgarden han sido motivo de visita obligada para conseguir ese toque final que andamos buscando, pero existe algo más concreto en la red? es decir, y si necesito diseñar una página 404 para mi web?

Os presento PatternTap.com

Pattern Tap is here to satisfy and encourage the inspiration needs of my interface design peers and peeps. We aspire to be the one stop pattern shop for your next inspiration need.

Sin duda una de mis web favoritas y de asistencia obligada en mis marcadores. Desde aquí se puede conseguir muchísima inspiración en múltiples de sets de diseños. Formularios, navegaciones, cabeceras, layouts, comentarios, listas, subnavegación, y un maravilloso etc. que nos ayudarán a conseguir ese diseño que tanto vamos buscando.

Espero que os guste :)

User experience

Es difícil medir la experiencia de un usuario en nuestra web. Gracias a Google Analytics y a otras aplicaciones, podemos hacernos una idea de qué está pasando desde que un cliente entra en nuestra página hasta que se va. Pero, realmente es fiable?.

Otra buena práctica es la de buscar a una persona totalmente ajena al proyecto y al campo, sentarla delante de un ordenador y observar cómo navega por nuestro site. Tomar apuntes, fijarse bien donde clica y donde no, ver si se ha dado cuenta de ese magnífico banner que tanto te ha costado diseñar, etc.

Acabo de encontrar una herramienta magnífica que nos ayuda en esta tarea. Se trata de CrazyEgg, una empresa especializada en User Experience que ofrece sus servicios para poder medir este hecho.

El sistema se basa en 4 factores principales: Heatmap, Scrollmap, Confetti y Overlay.

Heatmap nos permite ver los clicks de nuestros usuarios mediante un mapa de calor. Cuanto más azul es el color, menos clics ha habido, y cuanto más rojo, más clics ha tenido dicho enlace. Es genial como se ve el montaje en directo.

 

Scrollmap nos permite medir el factor de rebote. Si tenemos una página muy «larga», podemos observar qué factor de scroll ha hecho el cliente, de manera que podamos cazar al cliente que entra, echa un ojo, y se va sin hacer nada.

 

Confetti puede que sea de las más interesantes, ya que no solo nos permite ver los clics como Heatmap, sino que también nos lo fragmenta en enlaces referidos, sources, términos de búsqueda o keywords y un largo etc.

 

Overlay nos muestra un resumen del número de clics que ha tenido un enlace.

Vale, pero cuánto cuesta todo esto?, pues no es caro, en serio, por 9 euros al mes podemos tener derecho a tener 10 páginas monotorizadas.

 

Más información CrazyEgg

Dejandomarcas.com V2.0

Ya está arriba la nueva versión de Dejandomarcas.com

He procedido a reprogramar toda la aplicación usando CakePHP. El diseño también ha sufrido un cambio drástico, mostrando una cara mucho más limpia, más fresca y mucho más intuitiva.

Espero que os guste :]

Dejandomarcas.com y cakePHP

Estoy programando de nuevo mi site principal usando el framework cakePHP.

Pronto estará en producción corriendo con este framework cuyo trabajo me ha agilizado bastante. Espero que os gusten los cambios ya que hacía bastante tiempo que no actualizaba mi web (en cuanto a diseño y programación). Decir también que me mudo de Arsys, ya que, después de muchos años con muchísimos errores, he decidido mudarme de servidor a uno más barato y con más opciones de configuración, ya que desde el servidor compartido que tengo contratado con ellos me es imposible editar el .htaccess, imprescindible para que cakePHP trabaje con URLs amigables

Os dejo un pequeño pantallazo para que veais cómo está quedando:

Nuevo diseño y programación

Rotar capas con css

Este es un ejercicio sencillo para lograr la rotación de una capa. Podéis ver un ejemplo pulsando aquí

<style>

	* {
		margin: 0;
		padding: 0;
		text-align: center;
	}

	#header {
		width: 100%;
		height: 300px;
		background-color: #000000;
		z-index: 10;
	}
	
	#main {
		width: 900px;
		height: 500px;
		margin: -178 auto;
		z-index: 100;
	}
	
	#main .block-left {
		float: left;
		margin-top: 40px;
		margin-right: 30px;
	}
	
	#main .block-right {
		float: right;
		width: 395px;
		font-size: 14px;
		margin-top: 190px;
	}
	
	#main .block-right p {
		text-align: right;
	}
	
	#main .block-left .mapa {
		-moz-transform: rotate(-10deg);
		background-color: #FFFFFF;
		border: 4px solid #FFFFFF;
		box-shadow: 0 0 5px 3px #999999;
		height: 275px;
		margin-top: 45px;
		width: 464px;
	}

</style>

Una vez declarados los estilos, tan solo nos queda diseñar el html para ver los resultados

<div id="header"></div>
<div id="main">
	<div class="block-left">
		<div class="mapa">
                      <iframe width="464" height="275" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=es&amp;geocode=&amp;q=espa%C3%B1a,+sevilla,+plaza+de+espa%C3%B1a&amp;aq=&amp;sll=37.0625,-95.677068&amp;sspn=53.477264,114.169922&amp;ie=UTF8&amp;hq=espa%C3%B1a,+sevilla,+plaza+de+espa%C3%B1a&amp;t=h&amp;ll=37.377334,-5.986267&amp;spn=0.006295,0.006295&amp;output=embed"></iframe>
		</div>
	</div>
	<div class="block-right">
		<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce congue laoreet augue et consequat. Pellentesque hendrerit nulla eu turpis tincidunt fringilla. Phasellus a tempus massa. Donec sed congue dolor. Aenean eget ligula est, a luctus tellus. Nunc pharetra dui ultricies sapien suscipit at cursus arcu interdum.</p>
	</div>
</div>

El único inconveniente es que solo funciona para firefox, pero para seguir con la tónica de ejercicios nos sirve.

Colores y más colores

A la hora de diseñar un boceto web, lo más importante es dar con esa gama de colores que identifica al cliente. Muchos tenemos suerte porque el cliente tiene un buen manual de imagen corporativa y eso nos ahorra mucho trabajo y nos facilita la tarea, pero es cierto que la mayoría de los clientes no saben lo que quieren y esperan que tú como diseñador les digas exactamente qué necesitan.

Os presento 0to255.com

0to255.com


En esta web se nos presenta una magnífica utilidad gráfica para poder ver todo el desarrollo de un color que especifiquemos. Recuerdo cuando trabajaba en Cajasol que mi amigo Jose tenía siempre encima de su mesa una pantonera gigante como arma de trabajo, y eso me gustaba, porque tenía un amplio abanico de colores y siempre sabía cuál utilizar exactamente.

Para mí esto es prácticamente igual. Fácil de usar, cómodo, y muy dinámico, ya que haciendo click sobre el color que nos guste, se copia el código hexadecimal para poder pegarlo directamente en la hoja de estilos.

Para mí, una herramienta imprescindible a la hora de diseñar. Espero que os sirva de la misma ayuda como me está sirviendo a mí.

Fuente 0to255.com

Lipsum o quijotipsum?

Para todas aquellas personas que usamos el famosísimo lipsum a la hora de generar texto aleatorío y «rellenar» nuestros diseños, os presento otra magnífica herramienta llamada Quijotipsum. El servicio es básicamente igual que lipsum, pero esta vez, en lugar de generar texto en latín, nos muestra textos sacados directamente de la obra El Quijote.

Muchos no sabréis de qué estoy hablando, pero para los que lo sepan tanto como yo, seguro que les hace gracia la idea.

Enlace Quijotipsum

Briefing – Estrategias de diseño

Navegando por los blogs de wordpress, aparte de ver cosas muy raras, gente muy fea y blogs que parecen absurdos… uno se deleita con buenos posts como este…

Al momento de comenzar un proyecto hay ciertos pasos claves a realizar que si bien no nos aseguran un buen término, son de gran ayuda y sumamente objetivos. Como estudiantes siempre los hacemos pero por defecto, no porque sepamos que hay un manual que lo dice sino porque estos pasos son efectivos y algunos incluso cotidianos. La idea es poder nombrar esto que “hacemos por que si” y hacermos cargo por que en definitiva el manejo de esta metodología de trabajo es la que nos va a diferenciar de otros diseñadores cuando estemos en el mundo laboral. Me refiero a la Estrategia de Diseño cuyos principales pasos son el Briefing, Conversaciones Guiadas, Benchmark, Entrevistas a Usuarios y el Coaching

El Brief es básicamente un formulario que se le entrega al cliente para poder hacer un levantamiento de necesidades y saber específicamente qué es lo que busca con el proyecto. En el fondo le preguntamos de todo; quién es, qué quiere, cuáles son sus objetivos, con qué material cuenta, cuáles son sus necesidades, cuáles son sus ventajas y desventajas, quién es su competencia, en fin toda la información que nos pueda dar.

El Brief va acompañado de la Tabla Gant que como su nombre dice es una tabla con la asignación de las faenas en el tiempo. Son cuatro los factores dentro de la Tabla Gant: Las faenas, los tiempos, la cotización a partir de la hora hombre, y los recursos o personas. Hay programas especiales para realizarla como Project para PC y Merlin para Mac OS, sino también sirve el clásico Exel.

Algo muy importante acerca del Briefing es que en este momento el cliente se compromete y por escrito dice lo que quiere, es una especie de contrato, por lo tanto si algo no está declarado en el Brief no se hace, o se hace una cotización aparte.

Otra manera de saber más acerca del proyecto son las Conversaciones Guiadas con el cliente donde a través de preguntas capciosas podemos informarnos de cosas más específicas. Usualmente es un sicólogo quién tiene esta conversación con el cliente.

El Benchmark es un análisis comparativo. Se toma toda la información que el cliente nos da en el Brief, especialemente lo que tiene que ver con su competencia y nosotros comenzamos a investigar, medir, contrastar, comparar y hacemos el análisis FODA, se trata de las fortalezas, oportunidades, debilidades o vulnerabilidades internas y amenazas o riezgos externos. Entonces se hace un screenshot que básicamente es un informe donde le explicamos al cliente todo lo visto en el Benchmark.

A través del Coaching podemos enseñar y entrenar al cliente para poder cumplir el objetivo del proyecto de la manera más eficaz usando sus propias habilidades y recursos.

Fuente: http://manudelpino.wordpress.com/