Skip to content

← Modules and development

Anatomy of a module

A module's minimal files, the main class and the lifecycle (install/uninstall).

5 slides 5 min read
  1. PrestaShop · Mòduls

    Anatomy of a module

    The unit you extend PrestaShop with.

    PrestaShop · Modules and development arlaf.dev
  2. The minimal files

    A module is a folder inside modules/ with little that's mandatory.

    • modulename/ — the folder, named like the class.
    • modulename.php — the main class extending Module.
    • logo.png — the back-office icon.
    PrestaShop · Modules and development arlaf.dev
  3. The main class

    class MyModule extends Module
    {
        public function __construct()
        {
            $this->name = 'mymodule';
            $this->version = '1.0.0';
            $this->author = 'Arnau';
            parent::__construct();
            $this->displayName = $this->l('El meu mòdul');
        }
    }
    
    PrestaShop · Modules and development arlaf.dev
  4. The lifecycle

    install() runs on install (create tables, register hooks, set config) and uninstall() undoes it. Cleaning up is part of doing a module right.

    PrestaShop · Modules and development arlaf.dev
  5. Common folders

    As it grows, the module gains structure.

    • controllers/ — front and admin controllers.
    • views/ — module templates and assets.
    • classes/ — your ObjectModels.
    • translations/ — the translations.
    PrestaShop · Modules and development arlaf.dev
Read the full note

Un mòdul és la unitat amb què s’estén PrestaShop sense tocar el nucli. Abans d’escriure’n cap, val la pena saber de què es compon.

El mínim imprescindible

Un mòdul viu en una carpeta dins de modules/ amb el mateix nom que la seva classe. Estrictament només necessita dues coses: el fitxer nomdelmodul.php amb la classe principal i un logo.png. La resta s’afegeix quan cal.

La classe principal

Tot mòdul defineix una classe que estén Module. Al constructor s’hi fixen les metadades (nom, versió, autor, nom visible) i es crida parent::__construct(). Aquesta classe és el punt d’entrada de tot el que el mòdul fa.

install() i uninstall(): el cicle de vida

Quan instal·les el mòdul des del back-office, PrestaShop crida install(): aquí crees les taules que necessitis, registres els hooks i fixes la configuració per defecte. uninstall() ha de desfer-ho tot. Un mòdul que s’instal·la net però deixa brossa en desinstal·lar-se és un mòdul mal acabat.

Quan creix

A mesura que el mòdul fa més coses, guanya carpetes previsibles: controllers/ (front i admin), views/ (plantilles i assets), classes/ (els teus ObjectModel) i translations/. Conèixer aquest esquelet fa que llegir mòduls d’altres —i el teu d’aquí sis mesos— sigui molt més ràpid.