Vous êtes sur la page 1sur 233

Ce document est la propriété exclusive de julien oppliger (julien_opp@outlook.fr) - 14 décembre 2018 à 14:57

Fabien Serny

Préface de Bruno Lévêque, fondateur de PrestaShop

PrestaShop Développez vos propres modules e-commerce
PrestaShop
Développez vos propres
modules e-commerce
fondateur de PrestaShop PrestaShop Développez vos propres modules e-commerce compatible PrestaShop 1.6 et 1.7
compatible PrestaShop 1.6 et 1.7
compatible
PrestaShop
1.6 et 1.7

Ce document est la propriété exclusive de julien oppliger (julien_opp@outlook.fr) - 14 décembre 2018 à 14:57

(julien_opp@outlook.fr) - 14 décembre 2018 à 14:57 Pourquoi acheter et/ou télécharger des modules «

Pourquoi acheter et/ou télécharger des modules « tout-faits » pour votre boutique en ligne quand vous pouvez les développer vous-même ? Cet ouvrage vous enseignera justement les meilleures pratiques et vous encouragera à les mettre en œuvre lors des développements de nouvelles fonctionnalités de PrestaShop.

UN OUVRAGE DE RÉFÉRENCE POUR LES DÉVELOPPEURS

Ce livre vous apprendra tout ce qu’il faut connaître sur la création de modules PrestaShop. Que vous soyez déjà un expert de ce CMS e-commerce ou que vous le découvriez seulement, vous commencerez par concevoir des modules très simples avant de vous attaquer à ceux plus avancés (module de paiement ou module transporteur). De quoi vous permettre de personnaliser votre boutique au gré de vos envies et de vos besoins !

UNE APPROCHE PÉDAGOGIQUE

Vous créerez ainsi des modules performants et scalables (évolutifs), qui permettront d’améliorer e cacement votre boutique. Tout au long de votre lecture, vous serez également confronté à des exemples pratiques de concepts PrestaShop (tels que les « hooks ») sous la forme de tutoriels. Une fois que vous serez familiarisé avec les meilleures pratiques de PrestaShop, vous serez à même de réduire considérablement les éventuels problèmes ou erreurs dans vos futurs modules.

À qui s’adresse cet ouvrage ?

Aux développeurs n’ayant aucune connaissance sur PrestaShop et souhaitant être initiés.

Aux développeurs déjà initiés voulant approfondir leurs connaissances sur PrestaShop.

Aux marchands avec des connaissances techniques souhaitant modi er leur boutique.

Sur le site www.editions-eyrolles.com

• Téléchargez le code source des exemples

• Consultez les mises à jour et compléments

Fabien Serny est un ancien développeur « cœur » de PrestaShop. Durant ses dix années
Fabien Serny est un ancien développeur « cœur » de
PrestaShop. Durant ses dix années d’expérience dans
le développement web et l’e-commerce, il a travaillé
dans plusieurs sociétés d’e-commerce en France ;
puis il a créé fin 2010 sa propre société, 23Prod.
En 2014, il a lancé Froggy Commerce, une plate-forme
qui vend
des
modules
simples
et
puissants
pour
PrestaShop.

Sommaire

modules simples et puissants pour PrestaShop. Sommaire Créer un nouveau module. Ajouter une page et un

Créer un nouveau module. Ajouter une page et un formulaire de con guration • Les hooks. Accrocher le module sur des hooks Changer la position de votre module Les hooks dynamiques • L’objet Context. La fonction de traduction Ajouter des CSS et des JS dans votre module • Les mises à jour de module. Créer une table de données à l’installation d’un module Ajout d’un callback sur les actions de module FrontController, ObjectModel et Overrides. Utiliser les contrôleurs pour créer de nouvelles pages Installer des overrides à l’aide d’un module Utiliser la classe ObjectModel pour rendre votre code scalable • Admin Controllers et hooks. Utiliser les hooks du back office • Module transporteur. Utiliser des webservices Créer de nouveaux transporteurs • Module de paiement. Créer votre propre statut de commande Utiliser une API tierce • Le multiboutique. Con guration • Sécurité, performance et adaptations pour PrestaShop 1.7. Chercher du code malicieux dans des modules • La liste des hooks usuels et dynamiques

pour PrestaShop 1.7. Chercher du code malicieux dans des modules • La liste des hooks usuels

Ce document est la propriété exclusive de julien oppliger (julien_opp@outlook.fr) - 14 décembre 2018 à 14:57

PrestaShop

Développez vos propres modules e-commerce

Ce document est la propriété exclusive de julien oppliger (julien_opp@outlook.fr) - 14 décembre 2018 à 14:57

DANS LA MÊME COLLECTION

R. Hertzog, R. Mas. – Debian 8 Jessie.

N°14203, 2016, 538 pages. F-X. Bois, A-L. Benhenni. – Bases de données orientées graphes avec Neo4j. N°13804, 2016, 181 pages.

R. Goetter. – CSS 3 Flexbox.

N°14363, 2016, 134 pages.

C. Blaess. – Solutions temps réel sous Linux.

N°14208, 2015, 300 pages.

W. McKinney. – Analyse de données en Python.

N°14109, 2015, 488 pages.

E. Biernat, M. Lutz. – Data science : fondamentaux et études de cas.

N°14243, 2015, 312 pages.

B. Philibert. – Bootstrap 3 : le framework 100 % web design.

N°14132, 2015, 318 pages.

C. Camin. – Développer avec Symfony2.

N°14131, 2015, 474 pages.

S. Pittion, B. Siebman. – Applications mobiles avec Cordova et PhoneGap.

N°14052, 2015, 184 pages.

H. Giraudel, R. Goetter. – CSS 3 : pratique du design web.

N°14023, 2015, 372 pages.

C. Delannoy. – Le guide complet du langage C.

N°14012, 2014, 844 pages.

SUR LE MÊME THÈME

B. Eben. – e-commerce : tout savoir avant de créer une boutique en ligne !

N°14087, 2 e édition, 2016, 264 pages.

V. Isaksen, T. Tardif. – Joomla et Virtuemart.

N°12804, 3 e édition, 2012, 356 pages. Texto Alto. – Créez votre boutique en ligne. N°13305, 2011, 158 pages.

M. Blanchard. – Magento.

N°12515, 2010, 344 pages.

Retrouvez nos bundles (livres papier + e-book) et livres numériques sur http://izibook.eyrolles.com

Fabien Serny

PrestaShop Développez vos propres modules e-commerce Ce document est la propriété exclusive de julien oppliger
PrestaShop
Développez vos propres
modules e-commerce
Ce document est la propriété exclusive de julien oppliger (julien_opp@outlook.fr) - 14 décembre 2018 à 14:57
Ce document est la propriété exclusive de julien oppliger (julien_opp@outlook.fr) - 14 décembre 2018 à 14:57

Ce document est la propriété exclusive de julien oppliger (julien_opp@outlook.fr) - 14 décembre 2018 à 14:57

ÉDITIONS EYROLLES 61, bd Saint-Germain 75240 Paris Cedex 05 www.editions-eyrolles.com

© Packt Publishing 2014.

First published in the English language under the title “PrestaShop Module Development”

(9781783280254).

Traduction autorisée de l’ouvrage en langue anglaise intitulé PrestaShop Module Development par Fabien Serny (ISBN : 9781783280254), édité par Packt Publishing.

Traduit et adapté de l’anglais par Fabien Serny.

En application de la loi du 11 mars 1957, il est interdit de reproduire intégralement ou partiellement le présent ouvrage, sur quelque support que ce soit, sans l’autorisation de l’Éditeur ou du Centre Français d’exploitation du droit de copie, 20, rue des Grands Augustins, 75006 Paris.

© Groupe Eyrolles, 2016, ISBN : 978-2-212-14192-4

Ce document est la propriété exclusive de julien oppliger (julien_opp@outlook.fr) - 14 décembre 2018 à 14:57

Préface

Lorsque j’ai fondé PrestaShop il y a neuf ans, j’avais une vision unique et particulière d’une société. Je voulais créer une communauté de personnes fascinées par l’e-commerce. Puisant dans la force de l’open source, je voulais démocratiser l’industrie de l’e-commerce grâce à l’appui de cette communauté. Voilà le préambule du logiciel PrestaShop, permettant à tous de participer à la révolution e-commerce.

À présent, PrestaShop est l’un des plus gros groupes de développement exclusivement dédiés à l’e-commerce. Cette communauté compte un million de membres dans plus de 200 pays. Et 250 000 boutiques e-commerce fonctionnent aujourd’hui sous PrestaShop. Ces nombres changent chaque jour, mais notre logiciel a été téléchargé plus de 5 millions de fois et traduit dans au moins 65 langues.

Depuis le premier jour, notre communauté a créé un écosystème extraordinaire. Plus de 35 000 commits ont été effectués sur GitHub, devenant ainsi l’un des projets open source les plus actifs à l’échelle mondiale. Nous sommes vraiment fiers de fournir à nos utilisateurs un logiciel open source, évoluant régulièrement.

Lors de la construction de l’architecture PrestaShop, nous avons œuvré pour un système flexible et modulaire, permettant à chacun d’améliorer les capacités du logiciel en dévelop- pant leurs propres extensions. Celles-ci sont appelées des « modules PrestaShop » et plus de 10 000 d’entre elles sont à présent disponibles en téléchargement. Avec des fonctionnalités des plus basiques aux plus avancées, les possibilités sont infinies.

Fabien Serny est l’un des développeurs web les plus talentueux que j’ai rencontrés dans ma carrière. Nous avons travaillé ensemble pendant plus de cinq ans pour fournir des solutions aux développeurs souhaitant créer de nouveaux modules PrestaShop. Fabien a personnelle- ment contribué au cœur du logiciel afin de leur permettre de construire leurs propres modules plus facilement.

Ce livre est vraiment un « must have » pour tout développeur web qui s’intéresse à PrestaShop. Tous les bons conseils et pratiques pour construire de bons modules PrestaShop sont là. Ils ont été intelligemment introduits étape par étape dans ce tutoriel. À présent, c’est votre tour ! Créez votre premier module, partagez-le et faites ainsi partie de cette incroyable communauté.

Bruno Lévêque

Fondateur de PrestaShop

Ce document est la propriété exclusive de julien oppliger (julien_opp@outlook.fr) - 14 décembre 2018 à 14:57

Ce document est la propriété exclusive de julien oppliger (julien_opp@outlook.fr) - 14 décembre 2018 à 14:57

Table des matières

Avant-propos

1

Structure de l’ouvrage

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 1

Le matériel nécessaire

À qui s’adresse cet ouvrage ?

Introduction à la version 1.7 de PrestaShop

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 2

. 2

2

À propos de l’auteur

Remerciements

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 3

. 4

Compléments web

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 4

CHAPITRE 1

Créer un nouveau module

5

Premiers pas

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 5

Choix du nom technique et du nom public

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 5

Début du code Le constructeur Installation de votre module

Ajouter une page de configuration

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 6

. 6

. 9

10

Création de la page de configuration

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 10

Utilisation des templates Smarty

10

Créer un formulaire simple de configuration avec Bootstrap

 

11

Sauvegarder la configuration

.

.

.

.

13

Afficher un message de confirmation

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

En résumé

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

CHAPITRE 2

Les hooks

19

Accrocher le module sur des hooks

20

Création de la méthode d’installation Création de la méthode utilisée par le hook

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

20

20

Changer la position de votre module sur un hook Utiliser les hooks pour afficher des templates

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

23

Enregistrer les commentaires dans la base de données

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

Ce document est la propriété exclusive de julien oppliger (julien_opp@outlook.fr) - 14 décembre 2018 à 14:57

VIII

VIII

PrestaShop : développez vos propres modules e-commerce

VIII PrestaShop : développez vos propres modules e-commerce

Afficher les commentaires

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

Déclencher un hook

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

Ajouter un hook

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 31

Les hooks dynamiques

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

31

En résumé

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 32

CHAPITRE 3

L’objet Context

33

Présentation rapide du Context

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

33

. Ajouter des CSS et des JS dans votre module

La fonction de traduction

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

36

. 38

Compatibilité et dépendances

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

Vérification de compatibilité

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

Vérification des dépendances

.

.

.

.

.

.

.

.

.

.

44

En résumé

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

44

CHAPITRE 4

Les mises à jour de module

45

Créer une table de données à l’installation d’un module

45

Effacer une table de données lors de la désinstallation

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

49

. Mettre à jour le code du module

Mettre à jour le module

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

50

53

Ajouter un callback sur les actions de module

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 55

En résumé

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 59

CHAPITRE 5

FrontController, ObjectModel et Override

61

Utiliser les contrôleurs pour créer de nouvelles pages

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

62

Créer un nouveau FrontController Maintenir la compatibilité avec l’option des URL simplifiées

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

62

63

Créer un mini-dispatcher pour les actions du module Afficher le nom du produit et les commentaires associés Inclure des médias CSS et JS dans le contrôleur Ajouter un système de pagination Créer des routes pour les contrôleurs d’un module

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 64

65

66

67

. 69

Installer des overrides à l’aide d’un module

72

Créer un override Editer le template pour afficher les notes sur la liste produits Créer une nouvelle méthode pour une classe native Overrider un module

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 72

75

. 76

77

. Utiliser la classe ObjectModel pour rendre votre code scalable

.

.

.

.

.

.

.

.

.

.

.

77

Ce document est la propriété exclusive de julien oppliger (julien_opp@outlook.fr) - 14 décembre 2018 à 14:57

Table des matières

Table des matières IX

IX

IX

Créer une classe ObjectModel Utilisation dans notre module

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 78

79

Placer toutes les requêtes SQL dans les classes ObjectModel

80

Utiliser les HelperForm pour vos formulaires

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

82

Utiliser des contrôleurs pour vos hooks

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

85

En résumé

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

89

CHAPITRE 6

Admin Controllers et hooks

91

Ajouter un AdminController

91

Ajouter et installer un nouvel onglet dans votre panneau d’administration

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

92

Désinstaller l’onglet quand le module est désinstallé Lister les commentaires dans votre AdminController Améliorer la vue liste Ajouter des actions sur la vue liste Créer le template de type « afficher » Configurer la vue formulaire

.

.

.

.

.

.

.

94

94

. 96

97

99

104

Utiliser les hooks du back office

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

106

Attacher votre module au hook de l’administration des produits Afficher les commentaires associés au produit Afficher les commentaires associés à un client Faire des liens entre les sections d’administration

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

106

108

112

113

En résumé

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

114

CHAPITRE 7

Module transporteur

115

Personnaliser votre espace de travail

Description de l’API

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.