Accès illimité 24h/24 à tous nos livres & vidéos ! Découvrez la Bibliothèque Numérique ENI. Cliquez ici.
Commandez avant le 21 décembre inclus, pour recevoir votre commande à temps pour Noël.
  1. Livres et vidéos
  2. Développez avec PHP pour PrestaShop - Architecture, personnalisation, thèmes et conception de modules

Développez avec PHP pour PrestaShop Architecture, personnalisation, thèmes et conception de modules

  • En stock
  • Expédié en 24h00
  • Livraison à partir de 0,01 €
  • Version en ligne offerte pendant 1 an
  • 1 h d'accès gratuit à tous nos livres et vidéos pour chaque commande
  • Accessible immédiatement et pour une durée de 10 ans
  • Version HTML
  • Accès illimité 24h/24, 7J/7
  • Accès illimité 24h/24, 7J/7
  • Tous les livres en ligne, les vidéos et les cours enregistrés ENI
  • Plus de 10 nouveautés livres et vidéos chaque mois
  • Les nouveautés disponibles le jour de leur sortie
  • Accès 100% en ligne

Présentation

Ce livre sur PrestaShop (en version 8.0.0 au moment de l’écriture) s’adresse aux développeurs ayant des connaissances en PHP. Il a pour objectif de vous plonger au cœur de ce CMS e-commerce afin d’acquérir les notions nécessaires au développement de nouvelles fonctionnalités en explorant des concepts souvent méconnus. La connaissance du framework Symfony utilisé par PrestaShop (en version 4.4) est un plus mais n’est pas requise. Une brève introduction à ses composants est réalisée dès que nécessaire.

Vous apprenez à concevoir une boutique e-commerce sous PrestaShop sous tous ses aspects – excepté la gestion du catalogue – en explorant l’architecture du système, la personnalisation graphique des éléments d’affichage (édition de thèmes, modification de fichiers PDF et emails) ainsi que la conception de fonctionnalités par le biais de modules. En fin de lecture, vous serez également en mesure de modifier l’existant du système pour le faire correspondre à votre besoin.

PrestaShop reposant sur un système hybride – subtil mélange entre son propre framework (le legacy) et l’utilisation de Symfony (le moderne) – la présentation et l’exploration de l’ensemble des concepts utiles au développement et à la personnalisation seront étudiés dans un chapitre dédié.

Enfin, concept clé de PrestaShop oblige, un chapitre concernant la conception de modules aura pour objectif de vous guider tout au long de la conception d’une nouvelle fonctionnalité : un blog. Vous serez ainsi amené à développer une extension en utilisant l’ensemble des concepts legacy que vous ferez évoluer vers la modernité en étant guidé pas à pas tout au long du chapitre.

Des liens vers le guide de référence ainsi que le champ lexical utilisé donneront les clés nécessaires pour approfondir les connaissances sur un sujet précis.
Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.

Table des matières

  • Introduction
    • 1. Avant-propos
    • 2. À qui s'adresse cet ouvrage ?
    • 3. Prérequis
    • 4. Objectif du livre
    • 5. Architecture
      • 5.1 Modèle MVC
      • 5.2 Smarty
      • 5.3 Symfony
      • 5.4 Twig
    • 6. Conception dirigée par le domaine
      • 6.1 Préambule
      • 6.2 Les domaines de services (Domain services)
      • 6.3 Data Transfer Objects
      • 6.4 Les objets-valeur (Value Objects)
      • 6.5 Exceptions de domaine (Domain Exceptions)
      • 6.6 CQRS
        • 6.6.1 Validation des données
        • 6.6.2 Commandes (Command)
        • 6.6.3 Gestionnaire de commande (CommandHandler)
        • 6.6.4 Requête (Query)
        • 6.6.5 Gestionnaire de requête (QueryHandler)
        • 6.6.6 Bus de commandes
        • 6.6.7 Outils de développement
        • 6.6.8 Utilisation au sein des modules
    • 7. Installer PrestaShop
      • 7.1 Prérequis
        • 7.1.1 Serveur
        • 7.1.2 Version de PHP
        • 7.1.3 Extensions
        • 7.1.4 Réglages
        • 7.1.5 Outil de vérification automatique
      • 7.2 Manuellement
        • 7.2.1 Via une version packagée
        • 7.2.2 Via GitHub
      • 7.3 En ligne de commande
        • 7.3.1 Via Composer
        • 7.3.2 Via l'interface en ligne de commande (CLI)
      • 7.4 Création d'une release
    • 8. Mode développeur
      • 8.1 Préambule
      • 8.2 Activation du mode
      • 8.3 La fonction dump() et dd()
        • 8.3.1 Utilisation dans les fichiers Twig
      • 8.4 Le cache
      • 8.5 Console Smarty
      • 8.6 Le profiler
      • 8.7 Les avertissements de compatibilité
    • 9. Mettre à jour PrestaShop
      • 9.1 Manuellement
      • 9.2 Automatique via le module 1-Clik Upgrade
      • 9.3 En ligne de commande via le module 1-Click Upgrade
        • 9.3.1 Mise à jour de la configuration
        • 9.3.2 Effectuer la mise à jour
        • 9.3.3 Effectuer un retour en arrière
    • 10. Le back-office
      • 10.1 Informations
      • 10.2 Paramètres généraux
      • 10.3 Mode multiboutique
      • 10.4 Mode maintenance
      • 10.5 Performances
        • 10.5.1 Cache
        • 10.5.2 Mode debug
      • 10.6 Employés et profils
    • 11. Les fichiers de configuration
  • Au cœur de PrestaShop
    • 1. Introduction
    • 2. Conventions de code
      • 2.1 Introduction
      • 2.2 Conventions génériques
      • 2.3 PHP
        • 2.3.1 Documenter son code
        • 2.3.2 Normes utilisées
        • 2.3.3 Types stricts
        • 2.3.4 Déprécier une portion de code
      • 2.4 JavaScript
      • 2.5 HTML et CSS
    • 3. Base de données
      • 3.1 Structure
      • 3.2 Classe Db
        • 3.2.1 Connexion à la base de données
        • 3.2.2 Utilisation d'un serveur tiers
        • 3.2.3 Déclaration d'un serveur tiers
        • 3.2.4 Prévenir de l'injection SQL
        • 3.2.5 Constante _DB_PREFIX_
        • 3.2.6 Méthode execute()
        • 3.2.7 Méthode executeS()
        • 3.2.8 Méthode Insert_ID()
        • 3.2.9 Méthode Affected_Rows()
        • 3.2.10 Méthode getRow()
        • 3.2.11 Méthode getValue()
        • 3.2.12 Méthode numRows()
        • 3.2.13 Méthode nextRow()
        • 3.2.14 Méthode insert()
        • 3.2.15 Méthode update()
        • 3.2.16 Méthode delete()
      • 3.3 Classe DbQuery
        • 3.3.1 Introduction
        • 3.3.2 Type
        • 3.3.3 Clause SELECT
        • 3.3.4 Clause FROM
        • 3.3.5 Jointures
        • 3.3.6 Clause WHERE
        • 3.3.7 Clause ORDER
        • 3.3.8 Clause GROUP BY
        • 3.3.9 Clause HAVING
        • 3.3.10 Limites
      • 3.4 Classe ObjectModel
        • 3.4.1 Définir la ressource
        • 3.4.2 Gestion de la ressource
        • 3.4.3 La suppression douce (Soft Delete)
        • 3.4.4 Gestion de l'image associée
        • 3.4.5 Hooks dynamiques
    • 4. Table des configurations
      • 4.1 Utilisation
        • 4.1.1 Lire une configuration
        • 4.1.2 Enregistrer une configuration
        • 4.1.3 Supprimer une configuration
        • 4.1.4 Utiliser une configuration en tant qu'argument de service
      • 4.2 Multiboutique (ShopConstraint)
    • 5. Notion de contexte (Context)
      • 5.1 Introduction
      • 5.2 Composition du contexte
      • 5.3 Initialisation du contexte
      • 5.4 Récupération du contexte
      • 5.5 Utilisation du contexte
    • 6. Routes (Dispatcher)
      • 6.1 Utilisation des routes
        • 6.1.1 En PHP
        • 6.1.2 Via TypeScript
        • 6.1.3 Via JavaScript
    • 7. Smarty
    • 8. Console
      • 8.1 Listes des commandes
      • 8.2 Ajouter une commande
      • 8.3 Le contexte legacy
    • 9. Hooks
      • 9.1 Utilisation au sein d'un template
        • 9.1.1 Smarty
        • 9.1.2 Twig
      • 9.2 Appeler un hook
      • 9.3 Événements Symfony
        • 9.3.1 Enregistrer un écouteur (listener)
        • 9.3.2 Enregistrer une souscription (subscriber)
    • 10. Helpers
      • 10.1 HelperCalendar
      • 10.2 HelperView
      • 10.3 HelperList
        • 10.3.1 En-tête avancé
        • 10.3.2 Colonnes d'actions
      • 10.4 HelperOptions
      • 10.5 HelperForm
      • 10.6 HelperUploader et HelperImageUploader
      • 10.7 HelperKPI et HelperKpiRow
      • 10.8 HelperTreeCategories
      • 10.9 HelperShop et HelperTreeShops
    • 11. Formulaires (Form)
      • 11.1 Types additionels
      • 11.2 Aide au rendu
      • 11.3 Thème des formulaires
    • 12. Grille (Grid)
      • 12.1 Définir une grille
        • 12.1.1 Concept
        • 12.1.2 Fabrique de conception
        • 12.1.3 Fabrique des données
        • 12.1.4 Association des fabriques
      • 12.2 Hooks associés
    • 13. PrestaShopCollection
    • 14. LazyArray
      • 14.1 Introduction
      • 14.2 Classe abstraite : AbstractLazyArray
      • 14.3 Annotation @arrayAccess
      • 14.4 Utilisation des offsets
        • 14.4.1 Vérification de l'existence
        • 14.4.2 Récupération
        • 14.4.3 Modification
        • 14.4.4 Suppression
      • 14.5 Méthode appendArray()
      • 14.6 Autres méthodes
        • 14.6.1 appendClosure()
        • 14.6.2 getArrayCopy()
        • 14.6.3 intersectKey()
      • 14.7 Exemples d'utilisation
        • 14.7.1 Hook actionPresentProduct
        • 14.7.2 Hook actionPresentOrder
    • 15. Composants JavaScript
      • 15.1 Utilisation
      • 15.2 Composants Grid et GridExtensions
  • Modules
    • 1. Introduction
    • 2. Organisation des modules
    • 3. Composer
    • 4. Classe principale
      • 4.1 Test préalable
      • 4.2 Héritage
      • 4.3 Constructeur
    • 5. Installation et désinstallation
      • 5.1 Méthode install()
      • 5.2 Méthode uninstall()
      • 5.3 Méthode postInstall()
      • 5.4 Modification de la base de données
    • 6. Configuration du module
      • 6.1 Effectuer un rendu
      • 6.2 Ajout d'un formulaire
      • 6.3 Traitement des données
    • 7. Hooks
      • 7.1 Préambule
      • 7.2 Alias
      • 7.3 Enregistrement d’un hook
      • 7.4 Implémentation
    • 8. Widgets
    • 9. Modèles
      • 9.1 Introduction
      • 9.2 Définition du modèle
      • 9.3 Multilangue et multiboutique
      • 9.4 Doctrine
        • 9.4.1 Préambule
        • 9.4.2 Définition de l'entité
        • 9.4.3 Bien d'autres annotations
        • 9.4.4 Création des tables
        • 9.4.5 Gestion du multilangue
        • 9.4.6 Utilisation
        • 9.4.7 Repository
    • 10. Contrôleurs
      • 10.1 Introduction
      • 10.2 Front-office
        • 10.2.1 Définir une route personnalisée
        • 10.2.2 Restreindre son accès
        • 10.2.3 Placer le contrôleur en maintenance
      • 10.3 Back-office (Legacy)
      • 10.4 Vue Symfony pour le back-office
        • 10.4.1 Introduction
        • 10.4.2 Déclarer le contrôleur
        • 10.4.3 Définir une route
        • 10.4.4 Modifier la méthode getContent()
        • 10.4.5 Définir la vue
        • 10.4.6 Utiliser l'UI Kit
      • 10.5 Back-office (Symfony)
        • 10.5.1 Préambule
        • 10.5.2 Adaptation du menu
        • 10.5.3 Définition
    • 11. Mises à jour
    • 12. Traductions
      • 12.1 Préambule
      • 12.2 Système legacy
      • 12.3 Système moderne
        • 12.3.1 Créer le dictionnaire
        • 12.3.2 Exporter vos traductions
    • 13. Services
      • 13.1 Préambule
      • 13.2 Ajouter un service
      • 13.3 Utiliser le service
      • 13.4 Surcharger un service existant
      • 13.5 Décorer un service existant
      • 13.6 Utiliser un service dans un contexte legacy
    • 14. Utilisation des grilles
      • 14.1 Définition de la grille
      • 14.2 Filtres
      • 14.3 Récupération des données (QueryBuilder)
      • 14.4 Fabrique de grille
      • 14.5 Rendu
      • 14.6 Utilisation avancée
        • 14.6.1 Affichage par défaut (EmptyState)
        • 14.6.2 Actions en masse
    • 15. Utilisation des formulaires
      • 15.1 Conception du formulaire
    • 16. Commandes de console
      • 16.1 Introduction
      • 16.2 Définir une commande
      • 16.3 Enregistrer une commande
      • 16.4 Utiliser une commande
      • 16.5 Définition des arguments et options
    • 17. Utilisation du CQRS
      • 17.1 Création des commandes
        • 17.1.1 Command handler
      • 17.2 Dans les formulaires
        • 17.2.1 Form Data Handler
        • 17.2.2 Form Data Provider
    • 18. Cas particulier
      • 18.1 Module de paiement
        • 18.1.1 Déclaration d'un module comme module de paiement
        • 18.1.2 Ajout des modes de paiement
        • 18.1.3 Traitement et retour
        • 18.1.4 Mode binaire
        • 18.1.5 Mode debug
      • 18.2 Module de livraison
        • 18.2.1 Préambule
        • 18.2.2 Ajout de transporteurs
        • 18.2.3 À propos de la référence d'un transporteur
        • 18.2.4 Association du module au type de module de transport
        • 18.2.5 À propos d'un transporteur sans tranches
        • 18.2.6 Hooks et méthodes associées
    • 19. Cas avancés : utilisation de Vue.js
      • 19.1 Préambule
      • 19.2 Créer son application
      • 19.3 Nettoyer son installation
      • 19.4 Configuration propre à l'environnement PrestaShop
      • 19.5 Afficher l'application
      • 19.6 Transmettre des données du PHP à Vue.js
      • 19.7 Régler les conflits avec Bootstrap ou l'UI Kit embarqué
  • Personnalisation
    • 1. Traductions
      • 1.1 Introduction
        • 1.1.1 Les différentes ressources de catalogue
        • 1.1.2 Le format XLIFF
      • 1.2 Traduction des messages issus du cœur
      • 1.3 Traduction d'un thème front-office
      • 1.4 Domaines
        • 1.4.1 Les domaines existants
        • 1.4.2 Les sous-domaines
      • 1.5 Utiliser le service Translator
        • 1.5.1 Dans un service
        • 1.5.2 Dans un contrôleur
        • 1.5.3 Dans un template Smarty
        • 1.5.4 Dans un template Twig
    • 2. Fichiers PDF
      • 2.1 Introduction
      • 2.2 Modifier le style global des PDF
      • 2.3 Altérer un template PDF existant
      • 2.4 Fonctions disponibles
      • 2.5 Utilisation des hooks
      • 2.6 Concevoir un template PDF
        • 2.6.1 Conception du HTMLTemplate
        • 2.6.2 Conception avancée
        • 2.6.3 Génération du PDF
      • 2.7 Cas particulier : ajouter un modèle de facture
    • 3. E-mails
      • 3.1 Introduction
      • 3.2 Concepts clés
      • 3.3 Thème d'e-mails
        • 3.3.1 Architecture
        • 3.3.2 Variables
        • 3.3.3 Traductions
        • 3.3.4 Génération
        • 3.3.5 Ajout par le biais d'un module
      • 3.4 Ajouter un gabarit
        • 3.4.1 Déclaration du hook
        • 3.4.2 Conception du gabarit
      • 3.5 Surcharger un gabarit existant
      • 3.6 Ajouter de nouvelles variables
      • 3.7 Transformations
        • 3.7.1 Définir une transformation
        • 3.7.2 Enregistrer une transformation
      • 3.8 Convertisseur MJML
        • 3.8.1 Préambule
        • 3.8.2 Installer le convertisseur
        • 3.8.3 Lancer la conversion
      • 3.9 Utiliser le SDK
        • 3.9.1 Préambule
        • 3.9.2 Installer le SDK
        • 3.9.3 Lancer la conversion
        • 3.9.4 Prise en main
  • Webservice
    • 1. Introduction
    • 2. Activation du webservice
      • 2.1 Préambule
      • 2.2 Via l'interface
      • 2.3 Via la ligne de commande
    • 3. Création d'une clé d'accès
      • 3.1 Via l'interface
      • 3.2 En PHP
    • 4. Accéder au webservice
    • 5. Gestion des erreurs
    • 6. Schéma d'une ressource
      • 6.1 Schéma blank
      • 6.2 Schéma synopsis
    • 7. Format JSON
    • 8. Lire une ressource
    • 9. Paramètres d'URL
      • 9.1 Paramètre ps_method
      • 9.2 Paramètre display
      • 9.3 Paramètre date
      • 9.4 Paramètre filter
      • 9.5 Paramètre language
      • 9.6 Paramètre limit
      • 9.7 Paramètre sort
      • 9.8 Paramètre sendemail
      • 9.9 Paramètres id_shop et id_group_shop
    • 10. Créer une ressource
    • 11. Mettre à jour une ressource
    • 12. Mise à jour partielle d'une ressource
    • 13. Supprimer une ressource
    • 14. Déclarer une nouvelle ressource
    • 15. Gestion des images
    • 16. Gestion des prix spécifiques
    • 17. Gestion de la recherche
    • 18. Gestion des fichiers (attachments)
    • 19. Gestion des configurations
    • 20. Utilisation de la librairie PHP
      • 20.1 Installation et configuration
      • 20.2 Gestion des erreurs
      • 20.3 Lister les ressources disponibles
      • 20.4 Traitement du retour
      • 20.5 Lire une ressource
      • 20.6 Créer une ressource
      • 20.7 Mettre à jour une ressource
      • 20.8 Supprimer une ressource
      • 20.9 Gestion des images et des fichiers
      • 20.10 Multiboutique
  • Thèmes
    • 1. Introduction
    • 2. Structure d'un thème
    • 3. Fichier de configuration
      • 3.1 Paramètres généraux
      • 3.2 Paramètres spécifiques
        • 3.2.1 Configuration
        • 3.2.2 Modules
        • 3.2.3 Hooks
        • 3.2.4 Types d'image
        • 3.2.5 Layouts
        • 3.2.6 Dépendances
        • 3.2.7 Assets
      • 3.3 Paramètres requis
    • 4. Fichiers requis
      • 4.1 Valider son thème
    • 5. Gestions des assets
      • 5.1 Décharger un asset
      • 5.2 Webpack
        • 5.2.1 Installation
        • 5.2.2 Configuration
    • 6. Core.js
      • 6.1 Fonctions utiles
      • 6.2 prestashop.checkPasswordScore
    • 7. Les thèmes enfants
      • 7.1 Créer un thème enfant
      • 7.2 Charger les assets du thème parent
      • 7.3 Réaliser des modifications
    • 8. Smarty
      • 8.1 Hooks
      • 8.2 Widgets
      • 8.3 Plugins
        • 8.3.1 Ajouter une fonction
        • 8.3.2 Ajouter un modificateur
        • 8.3.3 Ajouter des plug-ins via un module
    • 9. Événements JavaScript
      • 9.1 Transmettre un événement
      • 9.2 Écouter un événement
    • 10. Sélecteurs JavaScript
    • 11. Prise en charge du RTL
    • 12. Utilisation de templates spécifiques
  • Pour aller plus loin
    • 1. Surcharges
      • 1.1 Objectifs
      • 1.2 Principes de base
      • 1.3 Surcharge de classes
      • 1.4 Surcharge de contrôleur
        • 1.4.1 Front-office
        • 1.4.2 Back-office
      • 1.5 Surcharge de formulaires
        • 1.5.1 Formulaire back-office
        • 1.5.2 Template back-office
      • 1.6 Surcharge de module
        • 1.6.1 Fichier principal
        • 1.6.2 Contrôleurs
        • 1.6.3 Templates
      • 1.7 Surcharge de services
      • 1.8 Note à propos du cache
    • 2. TinyMCE
      • 2.1 Introduction
      • 2.2 Modification de la configuration
      • 2.3 Utilisation dans le composant Form
    • 3. Différer un appel de module lors de l'import produits, accessoires
    • 4. Export de données au format CSV
    • 5. Description et image de produits
    • Index

Auteur

Jonathan DANSEEn savoir plus

Jonathan DANSE a démarré le développement de boutiques e-commerce avec PrestaShop en 2010 et a également réalisé un éditeur de code dédié nommé PrestaEdit. Développeur et concepteur de modules PrestaShop au sein des équipes Presta Module et BusinessTech et développeur de thèmes chez SEO Presta pendant plus de 7 ans, il est aujourd’hui Lead développeur PrestaShop chez Wepika, une agence certifiée PrestaShop. Également rédacteur d’articles techniques sur PrestaShop, il figure dans le top 40 des contributeurs de PrestaShop avec plus de 500 contributions au logiciel. Vainqueur du PrestaShop Awards « Contributor Favorite, Most line of code modified », il a aujourd’hui à cœur de faire profiter le lecteur de toute son expertise pour le guider dans son apprentissage de PrestaShop.

Caractéristiques

  • Niveau Confirmé à Expert
  • Nombre de pages 429 pages
  • Parution février 2023
    • Livre (broché) - 17 x 21 cm
    • ISBN : 978-2-409-03860-0
    • EAN : 9782409038600
    • Ref. ENI : EIPRESTA
  • Niveau Confirmé à Expert
  • Parution février 2023
    • HTML
    • ISBN : 978-2-409-03861-7
    • EAN : 9782409038617
    • Ref. ENI : LNEIPRESTA