Cómo hacer una redirección 302 temporal en PHP
16 de abril de 2021Contact Form 7. Limitar filas y columnas de un textarea
17 de abril de 2021En esta ocasión vamos a ver la estructura básica de un módulo en Prestashop. Vamos a crear nuestro primer módulo en Prestashop 1.7. Esto mismo te servirá para Prestashop 1.6.
Cómo crear un módulo de Prestashop
Lo primero que debemos hacer es ir al directorio modules donde crearemos una carpeta con el nombre de nuestro módulo. Debes tener en cuenta que este nombre debe ser único, no puede haber otro nombre igual en la tienda de Prestashop. Lo que se hace normalmente es poner las iniciales de nuestra empresa y ahí el nombre del módulo. En nuestra caso, crearemos un directorio con el siguiente nombre:
gcejemplo
Nunca uses espacios y si necesitas separar palabras usa el guión bajo. Ahora vamos a crear nuestro primer archivo PHP dentro del directorio que hemos creado en:
modules/gcejemplo
Y lo vamos a llamar exactamente igual que el directorio:
gcejemplo.php
Lo primero que debemos hacer es una comprobación de seguridad. Vamos a comprar que existe una constante que crea Prestashop para asegurarnos que este código solo se ejecutará con Prestashop, esto es, que no se podrá ejecutar accediendo directamente a la url del archivo. La comprobación es la siguiente:
if (!defined('_PS_VERSION_')) {
exit;
}
Estamos comprobando que exista la constante PS_VERSION, si no esta definida terminará la ejecución del código. De este modo nos aseguramos que el código de nuestro módulo solo se ejecuta desde el back office de Prestashop.
Ahora lo que tenemos que hacer es crear nuestra primera clase. Lo haremos en este mismo archivo, su nombre será el mismo que el directorio de nuestro módulo, extenderemos de la clase Module de Prestashop y seguiremos el estandar camel case. Así que debajo de la comprobación anterior creamos nuestra clase:
class GcEjemplo extends Module {
}
Extendemos de Modulo para heredar toda la funcionalidad que Prestashop implementa para nosotros. Así tenemos disponible una buena cantidad de métodos, funcionalidades que nos evitaremos de desarrollar nosotros. Esta clase Module se encuentra en:
classes/module/Module.php
Ahí puedes consultar cuales son las atributos y métodos que heradará nuestro módulo.
Lo siguiente que debemos hacer es definir el constructor de nuestra clase quedando de la siguiente forma:
class GcEjemplo extends Module {
public function __construct() {
$this->name = 'gcejemplo';
$this->tab = 'front_office_features';
$this->version = '1.0.0';
$this->author = 'Antonio J. Galisteo';
$this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
$this->displayName = 'Módulo GC de Ejemplo';
$this->description = 'Este es mi primer módulo de ejemplo';
parent::__construct();
}
}
Comentemos uno a uno:
- name es el identificador interno. Debe ser el nombre de la carpeta de nuestro módulo.
- tab es la pestaña donde queramos que se muestre listado.
- version es la versión de nuestro módulo.
- author indica el autor del módulo.
- ps_versions_compliancy es el rango de versiones con las que es compatible nuestro módulo. En este caso le decimos que la versión mínima es la 1.6 y la máxima es la última versión disponible.
- displayName es el nombre comercial de nuestro módulo. El que se mostrará en el back office.
- description es la descripción comercial de nuestro módulo. Igualmente es la que veremos en el back office.
- Por último lo que estamos haciendo es llamando al constructor del padre, de la clase Module de Prestashop de la que estamos extendiendo.
Ahora solo nos falta poner un icono a nuestro módulo para que se vea en el back office. El icono lo debemos guardar en el directorio principal de nuestro módulo. El nombre debe ser siempre:
logo.png
Y su tamaño debe ser de 32×32.
Si vamos ahora al back office a la sección de Módulos -> Módulos y Servicios, podemos buscar nuestro módulo e instalarlo aunque actualmente no hace nada.
Ya sabes cómo es la estructura básica de un módulo en Prestashop. Puedes aprender más en nuestra sección de Prestashop.
Espero que te haya sido de utilidad!