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 | 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 |
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 à |
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