Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Supports de cours
  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

Informations

Livraison possible dès le 16 octobre 2024
  • Personnalisable
Livres rédigés par des auteurs francophones et imprimés à Nantes

Caractéristiques

  • Reliure spirale - 17 x 21 cm (Médian)
  • ISBN : 978-2-409-03862-4
  • EAN : 9782409038624
  • Ref. ENI : EIMPRESTA

Informations

  • Consultable en ligne immédiatement après validation du paiement et pour une durée de 10 ans.
  • Version HTML
Livres rédigés par des auteurs francophones et imprimés à Nantes

Caractéristiques

  • HTML
  • ISBN : 978-2-409-03863-1
  • EAN : 9782409038631
  • Ref. ENI : LNEIMPRESTA
Ce support 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...
Aperçu du livre papier
  • Niveau Confirmé à Expert
  • Nombre de pages 336 pages
  • Parution février 2023
  • Niveau Confirmé à Expert
  • Parution février 2023
Ce support 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.

Téléchargements

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

Jonathan DANSE

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.
En savoir plus

Nos nouveautés

voir plus