> For the complete documentation index, see [llms.txt](https://akyos.gitbook.io/book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://akyos.gitbook.io/book/prestashop/modules/structure.md).

# Structure

### Structure classique d’un module

Un module est composé de nombreux fichiers, tous stockés dans un **dossier portant le même nom que le module**, ce dossier étant lui-même stocké dans le dossier `/modules` à la racine du dossier principal PrestaShop : `/modules/<monmodule>/`.

```
/modules/monmodule/
monmodule.php
config/
controllers/
classes/
views/
    css/
    js/
    img/
templates/
translations/
upgrade/
```

### Rôle des principaux éléments

* nomdumodule.php : fichier principal du module
* controllers/ : contrôleurs front ou admin
* classes/ : logique métier
* views/templates/ : templates utilisés par le module
* views/js/ et views/css/ : assets spécifiques
* config/ : configuration éventuelle
* upgrade/ : scripts de mise à jour

Dans les modules récent, on peut retrouver aussi /src/.

### Skelette classe principale du module

Voici un skellette de la classe principale d'un module.

```php
<?php

if (!defined('_PS_VERSION_')) {
    exit;
}

class ExempleModule extends Module
{
    public function __construct()
    {
        $this->name = 'examplemodule';
        $this->tab = 'front_office_features';
        $this->version = '1.0.0';
        $this->author = 'akyos.com';
        $this->need_instance = 0;
        $this->ps_versions_compliancy = [
            'min' => '1.7.6',
            'max' => _PS_VERSION_,
        ];
        $this->bootstrap = true;

        parent::__construct();

        $this->displayName = $this->trans('Name of my module', [], 'Modules.Exemplemodule.Admin');
        $this->description = $this->trans('Description o my module', [], 'Modules.Exemplemodule.Admin');
        $this->confirmUninstall = $this->trans('Are you sure you want to uninstall this module?', [], 'Modules.Exemplemodule.Admin');
    }

    public function install()
    {
        return parent::install();
    }

    public function uninstall()
    {
        return parent::uninstall();
    }

    public function isUsingNewTranslationSystem(): bool
    {
        return true;
    }
}

```
