Fondamentaux
Table des matières
Fondamentaux
Concepts
Avant de vous lancer dans la création d'un module, il est préférable que vous maîtrisiez déjà la programmation orientée Objet avec PHP.
PrestaShop a été conçu pour que des modules tiers puissent facilement être construits sur ses fondations, ce qui en fait une solution e-commerce particulièrement personnalisable.
Un module est une extension à PrestaShop qui permet à n'importe quel développeur de :
ajouter des fonctionnalités à PrestaShop ;
afficher de nouvelles informations sur le site (sélection de produits, etc.) ;
communiquer avec d'autres acteurs e-commerce (guides d'achat, plates-formes de paiement, plates-formes logistiques...)
etc.
La société qui développe PrestaShop fournit plus de 100 modules gratuitement avec la solution elle-même, vous permettant de lancer rapidement et gratuitement votre boutique en ligne.
Plus de 750 modules sont également disponibles sur le site officiel. Ces modules additionnels, ont été conçus par la société PrestaShop ou par des membres de la communauté de PrestaShop, et sont vendus à des prix abordables. En tant que développeurs, vous pouvez vous aussi vendre vos modules sur ce site, et recevoir 70% des ventes liées à votre création. Inscrivez-vous !
Architecture technique de PrestaShop
PrestaShop est basé sur une architecture 3-tiers :
Objet/données. L'accès à la base de données se fait par le biais des fichiers du dossier
/classes
.Contrôle des données. Le contenu envoyé à l'utilisateur est vérifié par les fichiers du dossier racine.
Apparence. Tous les fichiers du thème sont dans le dossier
/themes
.
Il s'agit du même principe que pour l'architecture MVC (Modèle-Vue-Contrôleur), en plus simple et plus accessible.
Notre équipe de développeurs a choisi de ne pas utiliser de framework PHP, tel que Zend Framework, Symfony ou CakePHP, afin d'obtenir une meilleure lisibilité du code, et donc de permettre des modifications plus rapides.
Cela permet également d'obtenir de meilleures performances, étant donné que le logiciel n'est fait que de lignes de code qu'il utilise effectivement, et qu'il ne contient pas un lit de bibliothèques génériques ajoutées.
Une architecture 3-tiers a de nombreux avantages :
Il est plus facile de lire le code du logiciel.
Les développeurs peuvent ajouter et corriger le code plus rapidement.
Les designers et intégrateurs HTML peuvent travailler en toute sécurité dans le dossier
/themes
sans avoir à comprendre ou même lire une seule ligne de code PHP.Les développeurs peuvent travailler sur des données et modules supplémentaires que les intégrateurs HTML peuvent exploiter.
Schéma SQL
Vous pouvez télécharger le schéma de PrestaShop 1.4.7.2 au format PNG (8 Mo), ou au format original (vous devrez télécharger MySQL Workbench pour le lire).
Qu'est qu'un module PrestaShop
L'extensibilité de PrestaShop est basé sur les modules, qui sont de petits programmes qui exploitent les fonctionnalités de PrestaShop et peuvent les modifier et les remplacer afin d'obtenir un PrestaShop plus utile ou plus personnalisé.
Principes techniques d'un module
Un module PrestaShop consiste en :
un dossier racine, nommé d'après le module, qui contiendra tous les fichiers du module, et sera placé dans le dossier
/modules
de votre PrestaShop ;un fichier PHP principal, nommé d'après le module, placé dans le dossier racine. Ce fichier PHP aura le même nom que son dossier racine ;
un fichier d'icône, nommé
logo.gif
, représentant ce module ;facultatif : des fichiers
.tpl
, contenant le thème du module ;facultatif : des fichiers de langue, si le module ou son thème a du texte à afficher (et donc, qui devrait être traduisible) ;
facultatif : dans un dossier
/themes/modules
, un dossier avec le même nom que le module, contenant des fichiers.tpl
et de langue si nécessaire. Ce dernier dossier est essentiel pendant la modification des modules existants, afin que vous puissiez le modifier sans devoir toucher à ses fichiers originaux. Notamment, il vous permet de gérer l'affichage du module de manière très variées, en fonction du thème courant.
Voyons par exemple le module PrestaShop blockuserinfo :
N'importe quel module PrestaShop, une fois installé sur une boutique en ligne, peut interagir avec un ou plusieurs "hooks", ou points d'accroche, à la Vue courant au moment de l'analyse du code (par exemple, lors de l'affichage du panier ou de la fiche produit, lors de l'affichage du stock actuel...). Spécifiquement, un hook est un raccourci vers les différentes méthodes disponibles au sein de l'objet Module, telles qu'assignées à ce hook.
Une liste des points d'accroche de PrestaShop
Voici un schéma de l'architecture de PrestaShop :
Quand une page du site est chargée, le moteur de PrestaShop vérifie quels sont les modules à appeler pour chacun des points d'accroche qui composent la page.
Voici une liste de 53 points d'accroche parmi les plus courants.
Front-office
Page d'accueil et contour du site
Nom
Emplacement du fichier
Visible
Description
header
header.php
Non
Est appelé entre les balises HEAD de la page. Idéal pour charger vos fichiers JavaScript et CSS.
top
header.php
Oui
Est appelé dans l'en-tête de la page.
leftColumn
header.php
Oui
Est appelé lors du chargement de la colonne de gauche.
rightColumn
footer.php
Oui
Est appelé lors du chargement de la colonne de droite.
footer
footer.php
Oui
Est appelé dans le pied de page.
home
index.php
Oui
Est appelé au centre de la page d'accueil.
Fiche produit
Nom
Emplacement du fichier
Visible
Description
extraLeft
product.php
Oui
Est appelé juste au-dessus du lien "Imprimer", sous la photo.
extraRight
product.php
Oui
Est appelé en dessous du bloc contenant le bouton "Ajouter au panier".
productActions
product.php
Oui
Est appelé à l'intérieur du bloc contenant le bouton "Ajouter au panier", sous ce bouton.
productOutOfStock
product.php
Oui
Est appelé à l'intérieur du bloc contenant le bouton "Ajouter au panier", en dessous de l'information "Disponibilité :".
productfooter
product.php
Oui
Est appelé au-dessus des onglets.
productTab
product.php
Oui
Est appelé dans la liste des onglets tels que "En savoir plus", "Caractéristiques", "Accessoires Idéal pour ajouter un onglet supplémentaire dont le contenu sera géré par le hook productTabContent
.
productTabContent
product.php
Oui
Est appelé lorsque l'un des onglets est cliqué, idéal pour afficher du contenu correspondant à un onglet que vous auriez ajouté avec le hook productTab
.
Panier
Nom
Emplacement du fichier
Visible
Description
cart
Class: Cart.php
Non
Est appelé juste après la création ou la mise à jour d'un panier.
shoppingCart
order.php
Oui
Est appelé en dessous du tableau listant les produits contenus dans le panier.
shoppingCartExtra
order.php
Oui
Est appelé en dessous du tableau listant les produits contenus dans le panier, en dessous des boutons de navigation.
createAccountTop
authentication.php
Oui
Est appelé dans le formulaire de création d'un compte client, au-dessus du bloc "Vos informations personnelles".
createAccountForm
authentication.php
Oui
Est appelé dans le formulaire de création d'un compte client, au-dessus du bouton "S'inscrire".
createAccount
authentication.php
Non
Est appelé juste après la création d'un compte client.
customerAccount
my-account.php
Oui
Est appelé sur l'accueil du compte client, en bas de la liste des liens disponibles. Idéal pour ajouter un lien au sein de cette liste.
myAccountBlock
Module: blockmyaccount.php
Oui
Est appelé dans le bloc "Mon compte" en colonne de gauche, en bas de la liste des liens disponibles. Idéal pour ajouter un lien au sein de cette liste.
authentication
authentication.php
Non
Est appelé juste après l'identification d'un client, uniquement si l'identification est validée (adresse e-mail et mot de passe OK).
Recherche
Nom
Emplacement du fichier
Visible
Description
search
Class: Search.php
Non
Est appelé après chaque recherche. Idéal pour analyser et/ou exploiter les recherches (et résultats de recherche) effectué es par vos clients.
Choix du transporteur
Nom
Emplacement du fichier
Visible
Description
extraCarrier
order.php
Oui
Est appelé en dessous de la liste des transporteurs disponibles lors du processus de commande. Idéal pour ajouter un transporteur ayant été développé sous la forme d'un module (exemple : Transporteur relais colis).
Paiement
Nom
Emplacement du fichier
Visible
Description
payment
order.php
Oui
Est appelé pour constituer la liste des moyens de paiements disponibles lors du processus de commande. Idéal pour permettre le choix d'un module de paiement que vous auriez développé.
paymentReturn
order-confirmation.php
Oui
Est appelé lors du retour sur la boutique après paiement. Idéal pour afficher un message de confirmation et/ou des précisions relatives au paiement.
orderConfirmation
order-confirmation.php
Oui
Identique à paymentReturn
(doublon).
backBeforePayment
order.php
Non
Est appelé lors de l'affichage de la liste des moyens de paiement disponibles. Idéal pour rediriger l'acheteur au lieu de lui afficher cette liste (Exemple : Checkout 1-click PayPal).
Retour marchandise
Nom
Emplacement du fichier
Visible
Description
orderReturn
order-follow.php
Non
Est appelé lorsqu'une demande de retour de marchandises est effectuée par le client, uniquement si aucune erreur n'est rencontrée.
PDFInvoice
Class: PDF.php
Oui
Est appelé lors de l'affichage d'une facture au format PDF. Idéal pour afficher du contenu dynamique ou statique au sein de cette facture.
Back-office
Général
Nom
Emplacement du fichier
Visible
Description
backOfficeTop
header.inc.php
Oui
Est appelé dans l'en-tête, au-dessus des onglets.
backOfficeHeader
header.inc.php
Non
Est appelé entre les balises HEAD de la page. Idéal pour charger vos fichiers JavaScript et CSS.
backOfficeFooter
footer.inc.php
Oui
Est appelé dans le pied de page, au-dessus de la mention "Powered By PrestaShop".
backOfficeHome
index.php
Oui
Est appelé au centre de la page d'accueil.
Commandes et détail de commandes
Nom
Emplacement du fichier
Visible
Description
newOrder
Class: PaymentModule.php
Non
Est appelé lors du processus de création d'une nouvelle commande, juste après la création elle-même.
paymentConfirm
Class: Hook.php
Non
Est appelé lorsque l'état d'une commande passe à "Payement accepté".
updateOrderStatus
Class: OrderHistory.php
Non
Est appelé lorsque l'état d'une commande est changé, juste avant le changement effectif.
postUpdateOrderStatus
Class: OrderHistory.php
Non
Est appelé lorsque l'état d'une commande est changé, juste après le changement effectif.
cancelProduct
AdminOrders.php
Non
Est appelé lorsqu'un élément est supprimé d'une commande, juste après cette suppression.
invoice
AdminOrders.php
Oui
Est appelé lorsque les détails d'une commande sont affichés, au-dessus du bloc "Information client".
adminOrder
AdminOrders.php
Oui
Est appelé lorsque les détails d'une commande sont affichés, en-dessous du bloc "Information client".
orderSlip
AdminOrders.php
Non
Est appelé lors de la création d'un bon d'achat, juste après sa création.
Produits
Nom
Emplacement du fichier
Visible
Description
Nom
Emplacement du fichier
Visible
Description
addproduct
AdminProducts.php
Non
Est appelé lorsqu'un produit est créé ou dupliqué, après la création/duplication.
updateproduct
AdminProducts.php
Non
Est appelé lorsqu'un produit est mis à jour avec l'ajout d'une nouvelle photo, après la mise à jour.
deleteproduct
Class: Product.php
Non
Est appelé lorsqu'un produit est supprimé, avant la suppression.
updateQuantity
Class: PaymentModule.php
Non
Est appelé lors de la validation d'une commande dont le statut n'est pas "Annulé" ou "Erreur de paiement", pour chaque produit de la commande.
updateProductAttribute
Class: Product.php
Non
Est appelé lors de la mise à jour d'une déclinaison de produit, après la mise à jour.
watermark
AdminProducts.php
Non
Est appelé lors de l'ajout d'une image sur un produit, après l'ajout.
Statistiques
Nom
Emplacement du fichier
Visible
Description
GraphEngine
Class: ModuleGraph.php
Oui
Est appelé lors de l'affichage d'un graphique de statistiques.
GridEngine
Module: GridEngine.php
Oui
Est appelé lors de l'affichage d'une liste de données statistiques.
AdminStatsModules
AdminStatsTab.php
Oui
Est appelé lors de l'affichage de la liste des modules de statistiques.
Clients
Nom
Emplacement du fichier
Visible
Description
adminCustomers
AdminCustomers.php
Oui
Est appelé sur le détail d'un client, après la liste des groupes de clients auxquels il appartient.
Transporteurs
Nom
Emplacement du fichier
Visible
Description
updateCarrier
AdminCarriers.php
Non
Est appelé lors de la mise à jour d'un transporteur, après la mise à jour.
Last updated