Pour commencer

septembre 14, 2020 0 Par Serge Holzer
Pour commencer

Démarrage rapide

Les modules doivent suivre certaines directives pour pouvoir travailler sur PrestaShop.
Si vous souhaitez démarrer rapidement, avec un modèle de module prêt à l’emploi, vous pouvez utiliser le générateur de modules disponible sur le validateur PrestaShop.
Il permet de générer facilement un module de paiement (pour PS 1.6 et inférieur) ou d’expédition, avec la structure de base, les propriétés par défaut personnalisées et les cas d’utilisation les plus courants couverts (hook, upgrade…).
D’autres squelettes ont été créés pour vous aider à créer des modules spécifiques, comme indiqué dans la liste de références suivante.
Références :

Générer un module sur PrestaShop Validator

Squelette d’un module de paiement pour PrestaShop 1.7
Squelette d’un module utilisant la fonction CQRS (Plus de détails sur le CQRS)
Tutoriel : Comprendre votre premier module
Créons un premier module simple ; cela nous permettra de mieux décrire sa structure. Nous l’appellerons “Mon module”.
Tout d’abord, créez le dossier du module, dans le dossier /modules. Il doit avoir le même nom que le module, sans espace, uniquement des caractères alphanumériques, le trait d’union et le soulignement, le tout en minuscules : /mymodule.
Ce dossier doit contenir le fichier principal, un fichier PHP du même nom que le dossier, qui se chargera de l’essentiel du traitement : mymodule.php.
C’est suffisant pour un module très basique, mais il est évident que d’autres fichiers et dossiers peuvent être ajoutés par la suite.
Le test constant
Le fichier principal mymodule.php doit commencer par le test suivant :
<?php
if (!defined(‘_PS_VERSION_’)) {
sortie ;
}
Il vérifie l’existence d’une constante PrestaShop (son numéro de version) toujours existante, et si elle n’existe pas, il arrête le chargement du module. Le seul but est d’éviter que des visiteurs malveillants ne chargent directement ce fichier.
Notez que, comme l’exigent les normes de codage de PrestaShop (voir ci-dessus), nous n’utilisons pas de balise de fermeture PHP.
La classe principale
Le fichier principal doit contenir la classe principale du module (ainsi que d’autres classes si nécessaire). PrestaShop utilise la programmation orientée objet, tout comme ses modules.
Cette classe doit porter le même nom que le module et son dossier, dans CamelCase (voir https://en.wikipedia.org/wiki/CamelCase). Dans notre exemple : MonModule. De plus, cette classe doit étendre la classe Module, afin d’hériter de toutes ses méthodes et attributs.
<?php
if (!defined(‘_PS_VERSION_’)) {
sortie ;
}
La classe MyModule étend le module
{
}
Il peut tout aussi bien étendre toute classe dérivée du module, pour des besoins spécifiques : PaymentModule, ModuleGridEngine, ModuleGraph, etc.
À ce stade, si vous placez le dossier du module dans le dossier /modules, le module est déjà visible dans la page “Modules” du back office, dans la section “Autres modules” – mais sans nom réel ni vignette.

La méthode du constructeur

Maintenant, remplissons le bloc de code “classe” avec les lignes essentielles du constructeur. Un constructeur est une fonction dans une classe qui est automatiquement appelée lorsque vous créez une nouvelle instance d’une classe avec new. Dans le cas d’un PrestaShop, la classe constructor est la première méthode à être appelée lorsque le module est chargé par PrestaShop. C’est donc le meilleur endroit pour définir la plupart de ses détails.
<?php
if (!defined(‘_PS_VERSION_’)) {
sortie ;
}
La classe MyModule étend le module
{
fonction publique __construct()
{
$this->name = ‘mymodule’ ;
$this->tab = “front_office_features” ;
$this->version = ‘1.0.0’ ;
$this->author = ‘Firstname Lastname’ ;
$this->need_instance = 0 ;
$this->ps_versions_compliancy = [
min” => “1,6”,
max” => _PS_VERSION_.
] ;
$this->bootstrap = vrai ;
parent::__construct() ;
$this->displayName = $this->l(‘Mon module’) ;
$this->description = $this->l(‘Description de mon module.’) ;
$this->confirmUninstall = $this->l(‘Etes-vous sûr de vouloir désinstaller?’) ;
if (!Configuration::get(‘MYMODULE_NAME’)) {
$this->warning = $this->l(“Aucun nom fourni”) ;
}
}
}
Examinons chaque ligne de cette première version de la classe MyModule…
<?php
// Cette ligne définit la fonction de constructeur de classe.
$this->name = ‘mymodule’ ;
$this->tab = ‘front_office_features’ ;
$this->version = ‘1.0’ ;
$this->author = ‘Firstname Lastname’ ;
Cette section attribue une poignée d’attributs à l’instance de classe (this) :
l’attribut “name”. Cet attribut sert d’identifiant interne. La valeur DOIT être le nom du dossier du module. N’utilisez pas de caractères spéciaux ou d’espaces et gardez-les en minuscules.
L’attribut “tab”. Le titre de la section qui doit contenir ce module dans la liste des modules du back office de PrestaShop. Vous pouvez utiliser un nom existant, tel que seo, front_office_features ou analytics_stats, ou un nom personnalisé. Dans ce dernier cas, une nouvelle section sera créée avec votre identifiant. Nous choisissons “front_office_features” car ce premier module aura surtout un impact sur le front-end.