← volver al blog

Cómo crear un módulo personalizado en PrestaShop desde cero

Guía paso a paso para desarrollar tu primer módulo PHP en PrestaShop: estructura de archivos, hooks, configuración y buenas prácticas.

PrestaShopPHPMódulos

Desarrollar un módulo para PrestaShop puede parecer intimidante al principio, pero la plataforma tiene una arquitectura bastante predecible. Una vez que entiendes la estructura mínima, todo lo demás es lógica PHP estándar.

Estructura mínima de un módulo

Todo módulo en PrestaShop vive dentro de la carpeta /modules/{nombre_modulo}/ y necesita al menos dos archivos para funcionar:

<?php
if (!defined('_PS_VERSION_')) exit;

class MiModulo extends Module {
  public function __construct() {
    $this->name    = 'mi_modulo';
    $this->tab     = 'front_office_features';
    $this->version = '1.0.0';
    $this->author  = 'Carlos Moreno';
    parent::__construct();
    $this->displayName = $this->l('Mi Módulo');
    $this->description = $this->l('Descripción del módulo.');
  }

  public function install() {
    return parent::install() && $this->registerHook('displayHome');
  }

  public function hookDisplayHome($params) {
    return $this->display(__FILE__, 'mi_modulo.tpl');
  }
}

¿Qué es un hook?

Los hooks son puntos de enganche que PrestaShop expone en distintas partes del front y el back office. Al registrar tu módulo en un hook con registerHook(), PrestaShop ejecutará tu función correspondiente cada vez que ese punto se renderiza.

Los hooks más usados en proyectos reales son:

Buenas prácticas

Después de haber desarrollado módulos en producción para tiendas con miles de pedidos diarios, estas son las reglas que me han evitado dolores de cabeza:

  1. Siempre valida _PS_VERSION_ al inicio del archivo para evitar accesos directos.
  2. Usa $this->l() para todos los textos: hace el módulo traducible.
  3. Añade métodos uninstall() que limpien lo que install() creó (tablas, configuraciones).
  4. No hagas queries SQL directas; usa ObjectModel o Db::getInstance()->executeS().
Un módulo que no tiene uninstall() limpio es un módulo que va a dejar basura en la base de datos para siempre.

¿te suena familiar?

¿Necesitas esto en tu tienda?

Reviso tu caso y te digo sin rodeos si puedo ayudarte con prestashop.

Hablar por WhatsApp
siguiente artículo → Migración de WooCommerce a PrestaShop: lo que nadie te cuenta