Desarrollo en PrestaShop 1: Introducción

Logo PrestaShop

Nota: Este artículo y el vídeo correspondiente estarán disponible en nuestra plataforma de formación de PrestaShop junto con un montón de material adicional que se irá añadiendo cada semana.

PrestaShop está creado desde cero con PHP haciendo un gran uso de la programación orientada a objetos. Si tienes experiencia programando en PHP pero no has trabajado con clases y objetos te recomiendo este otro curso creado por mí.

PrestaShop no utliza ningún framework PHP (como Zend, Symfony, CakePHP o similares). Dicen que, de esa forma, evitan tener partes genéricas que no se usan y el código es más limpio y fácil de entender.

Al igual que en otros sistemas, como WordPress, está totalmente desaconsejado modificar las “tripas” de PrestaShop. Ten en cuenta que cuando aparezca una nueva versión tendrás que repetir gran parte del trabajo de modificación que hayas hecho.

Para modificar PrestaShop tienes tres posibilidades:

  • Usar Temas (o Themes, en inglés): éstos te permiten modificar el aspecto de la tienda.
  • Crear módulos. Son paquetes que modifican el comportamiento de PrestaShop o añaden nuevas funcionalidades pero sin tocar el código básico.
  • Overrides. Podría traducirse por “Reemplazo”. Permiten modificar el comportamiento de la tienda creando nuestras propias clases que sustituirán a las que vienen “de serie”. Por ejemplo, podemos crear nuestra clase Products.php que reemplazaría a la original pero sin borrarla.

Si quieres crear un módulo de PrestaShop y compartirlo o venderlo los overrides están totalmente prohibidos. Volveremos sobre esto en futuras entregas.

La arquitectura de PrestaShop

PrestaShop se basa en lo que se llama el principio Modelo-Vista-Controlador.

Como este es un curso práctico voy a explicar en palabras sencillas qué significa ésto. Consiste en separar el código de tal forma que una parte se encargue de la manipulación de datos (modelo), otra parte se encargue de mostrar información al usuario (vista) y otra se encargue de recibir las solicitudes del usuario y procesarlas (controlador).

De esta forma el código queda mucho más limpito y es fácil de entender. Con este sistema evitamos tener mezcladas en el código las consultas a la base de datos, con código HTML y el resto del código (si conociste el viejo OsCommerce sabrás de la ventaja de tener todo separado).

Modelo

Es la parte que se encarga de manipular los datos. En los modelos va todo el código relacionado con el procesamiento de datos y las consultas a la base de datos.

Vista

En las vistas va todo el código que se encarga de la parte que ve el usuario. Por ejemplo, los listados de productos, las páginas, cesta de la compra.

Una vista el la parte con la que interactúa el usuario.

En una vista no debería procesarse nada de información. La vista recibe la información ya procesada y se la muestra al usuario.

Controlador

El controlador es el que se encarga de recibir las solicitudes del usuario, utilizar los modelos para procesar la información y mostrarla de nuevo al usuario a través de las vistas.

Por ejemplo, el usuario está en la vista que muestra el listado de productos y añade un producto a la cesta. Esta petición la recibe un controlador que se encarga de llamar a un modelo y es éste el que lo añade a la tabla de la cesta de la compra. Luego el controlador es el que se encarga de mostrar la información de la cesta al usuario (si el sistema está configurado así).

Ventajas del Modelo-Vista-Controlador

Si no estás acostumbrado a esta forma de separar el código (aunque deberías) puede que te resulte algo incómodo. Sin embargo tiene muchas ventajas, por ejemplo:

  • El código es mucho más fácil de leer y entender.
  • Los diseñadores pueden trabajar de manera independiente de los desarrolladores y no es necesario que sepan PHP. Además, no interferirán el uno en el trabajo del otro porque trabajarán en partes diferentes del código.

En el próximo artículo os mostraré cómo montar un entorno de desarrollo para empezar a trabajar con PrestaShop. Hablaré sobre Vagrant, que es una de las formas más convenientes de trabajar sin necesidad de instalar un servidor Apache y Mysql en nuestro ordenador.

Leave a Comment