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