herve

Prestashop : Aller plus loin dans le déploiement continu

La gestion du code et son déploiement via la CI (Continuous Integration) / CD ( Continuous Deployment ) apporte un vrai confort dans la gestion des projets web.
Un projet prestashop n’en fait pas exception.

J’avais déjà fait un article sur le sujet il y’a quelques années : https://www.h-hennes.fr/blog/2017/04/27/prestashop-passer-au-deploiement-continu/
Celui-ci est encore basé sur la version 1.6.1, mais la logique de fonctionnement reste la même, et ce workflow de base est en place sur l’ensemble des mes projets depuis ce temps.
Mais nous allons voir ensemble qu’il est possible d’aller plus loin et se se simplifier encore plus la vie  à travers une nouvelle série d’articles.

Pour commencer j’ai prévu de faire un article rapide qui va définir certains changements par rapport à mon article initial.
Ainsi que gérer les versions plus récentes de Prestashop.

Puis je détaillerais une série de nouvelles étapes qui vont partir des besoins suivants :

  • Qui peut livrer du code et ou
  • Est-ce que la qualité du code livrée est correcte
  • Comment limiter les interactions manuelles
  • Est-ce que mon site fonctionne toujours après ma livraison de code.

Prestashop : Aller plus loin dans le déploiement continu Lire la suite »

Prestashop : Mettez en avant vos modules dans le listing des modules dans l’administration

La nouvelle version 8 de Prestashop rajoute une nouvelle fonction très intéressante qui permets de faire remonter une liste de modules non installés sur le site en question automatiquement dans le listing des module qui est présent dans l’administration.

Globalement cela vous permets de faire comme addons le faisait sur les versions précédentes c’est à dire de rendre installable directement depuis le listing des modules.
En cherchant un peu plus loin cela vous permets donc de créer votre propre marketplace de modules 🙂

Nous n’irons bien sur pas aussi loin dans cet article, mais je vais détailler comment faire cela techniquement.
C’est relativement facile, je me suis inspiré du fonctionnement du module officiel de Prestashop qui fait remonter leur propres modules à partir de la version 8.0 et qui est disponible ici :
https://github.com/PrestaShop/ps_distributionapiclient

Tout passe comme toujours avec Prestashop par la création d’un module, qu’on appellera hhmodulescatalog

 

Fonctionnement technique

Il existe un nouveau hook actionListModules qui est lancé dans le fichier  \PrestaShop\PrestaShop\Core\Module\ModuleRepository
Celui ci permets à chaque module implémentant ce hook, de retourner un tableau qui contient la liste de vos modules spécifiques à afficher dans le listing des modules.…

Prestashop : Mettez en avant vos modules dans le listing des modules dans l’administration Lire la suite »

Prestashop : Devenez un expert en développement de modules avec le livre « Practical Module Development for Prestashop 8 »

Cette année est riche en sortie de livre Prestashop , je vous avait déjà présenté il y’a quelques mois un livre pertinent dans le développement prestashop ici : Prestashop : Boostez vos connaissances avec le livre Développez avec Php pour Prestashop 

Et je vous présente à présent un nouveau livre qui va vous permettre de progresser dans le développement de modules Prestashop.
Celui-ci est écrit par Louis AUTHIE qui travaille dans le web depuis près de 25 ans, et sur Prestashop depuis 2012 ( depuis pas mal de versions donc 🙂 )

Celui-ci est axé sur l’univers des modules qui constitue l’essentiel de notre travail sur Prestashop.
Louis est expert également avec le framework Symfony, qui est intégré dans Prestashop depuis la version 1.7 et qui remplace progressivement l’ensemble des pages du back office.

A travers ce livre il détaille les éléments essentiels pour réaliser des modules de qualité dans prestashop :

  • Compréhension globale de la solution et des concepts clés ( Controllers / Hooks / Configuration / Back office )
  • Création de modules simples pour comprendre la base
  • Création de modules avancés qui vont mettre en avant l’utilisation des entités et services symfony
  • Création de modules utilisant le pattern CQRS
  • Création d’un module de paiement
  • Création d’un module de livraison

Vous l’aurez compris en tant que développeur de module Prestashop, c’est une ressource indispensable pour se mettre à jour sur les dernières bonnes pratiques à mettre en oeuvre dans vos modules.…

Prestashop : Devenez un expert en développement de modules avec le livre « Practical Module Development for Prestashop 8 » Lire la suite »

FOP Day #3 à Lyon le 12 juin

L’association Friends of Presta dont je fait partie organise son 3 ème FOP Day le 12 juin 2023 à Lyon.

Cet événement est destiné à un public plutôt technique ( Agence / Développeurs / Marchants techniques ) et c’est également l’occasion de rencontrer pour de vrai les acteurs de l’éco-système Prestashop 🙂 autour de conférences animées par des experts dont voici le programme :

Fop Day

C’est également l’occasion de partager du bon temps pendant les restaurants qui entourent les conférences.
Pour ma part après avoir déjà participé aux 2 premières éditions je serais à nouveau de la partie 🙂

Si vous souhaitez vous inscrire toutes les informations nécessaires sont disponibles ici : https://shop.friendsofpresta.org/14-pass-fop-day.html…

FOP Day #3 à Lyon le 12 juin Lire la suite »

Prestashop : Boostez vos connaissances avec le livre Développez avec Php pour Prestashop

Une fois n’est pas coutume ce n’est pas un article technique, mais de présentation d’une superbe ressource sur Prestashop qui vient de sortir.
Le livre « Développez avec Php pour Prestashop » est une vrai bible sur la solution Prestashop qui va présenter un peu près tout ce qui est possible de savoir sur la solution 🙂

  • Architecture du système prestashop
  • Fonctionnalité de bases
  • Personnalisation de la solution à travers les modules
  • Gestion des thèmes

Ce livre est écrit par Jonathan Danse qui est un expert reconnu dans l’écosystème de Prestashop et qui travaille avec la solution depuis 2010 ( ça fait quelques années de connaissances accumulées 😀 )
Je conseille ce bouquin à tous les développeurs Prestashop confirmés ou non, pour ma part j’ai appris pas mal de notions que j’ignorais malgré mes longues années de travail sur Prestashop également.

Vous pouvez acheter le livre ici : https://www.editions-eni.fr/livre/developpez-avec-php-pour-prestashop-architecture-personnalisation-themes-et-conception-de-modules-9782409038600

PS : Je précise que ce n’est absolument pas un lien d’affiliation je ne gagne rien à partager ce lien, mais c’est une ressource qui mérite d’être connue 😉
Je présenterais prochainement un autre ouvrage sur le sujet, dans lequel je suis un peu plus impliqué 🙂…

Prestashop : Boostez vos connaissances avec le livre Développez avec Php pour Prestashop Lire la suite »

Prestashop : Ajouter une règle de validation sur un champ du formulaire de création de compte

Ça fait quelques temps que je n’avais pas publié de tutoriel générique sur Prestashop, mais celui-ci est parti du besoin suivant :

Sur ma boutique sur laquelle je propose des modules ( gratuit ) en téléchargement , j’ai pas mal d’emails fantaisistes pour les clients qui s’inscrivent.
Hors comme les modules sont ensuite envoyés par email, si celui du client ne correspond à rien aucune chance qu’il arrive au destinataire :/
Je souhaitais donc rajouter une règle de validation supplémentaire, pour ne pas autoriser les domaines emails  : test.com, example.com …

Attention ce tutoriel s’applique si vous souhaitez ajouter des règles de validation sur les champs standards du formulaire de création de compte :

  • Civilité
  • Prénom
  • Nom
  • Email
  • Mot de passe
  • Date de naissance

Pour l’ajout de vos propres champs vous pouvez regarder le tutoriel ici : https://www.h-hennes.fr/blog/2017/10/10/prestashop-1-7-ajouter-des-champs-clients/

Champs standards du formulaire de création de compte

Analyse et identification de la procédure

Pour ajouter cette validation on va faire un module qui va utiliser le hook additionalCustomerFormFields
Qui contrairement à ce que son nom laisse penser, permets également de modifier les champs actuels du formulaire.…

Prestashop : Ajouter une règle de validation sur un champ du formulaire de création de compte Lire la suite »

Utilisation d’une google cloud function avec authorisation en php

Petit tutoriel qui sors un peu de mes sujets habituels mais qui reste dans le cadre du développement php.
Nous allons voir comment appeler une google cloud fonction, qui nécessite une authentification.

La difficulté pour moi a vraiment été l’authentification et c’est un sujet qui m’a fait perdre un temps fou car la documentation de Google n’était absolument pas
claire sur le sujet.
L’authentification est réalisée via un fichier json reprenant les informations d’un compte de service. ( Cf. exemple ci-dessous )

Comme vous pouvez le juger sur la page suivante :  https://cloud.google.com/functions/docs/securing/authenticating 

Des exemples sont donnés en NodeJs, Go , Python et Java, mais en Php nous sommes invités à utiliser des bibliothèques tiers pour générer des jetons d’authentification, sans explications détaillées.

Voici un exemple de contenu du fichier d’authentification json

{
  "type": "service_account",
  "project_id": "PROJECT-ID",
  "private_key_id": "PRIVATE-KEY-ID",
  "private_key": "PRIVATE-KEY",
  "client_email": "[email protected]",
  "client_id": "CLIENT-ID",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/CUSTOMER-URL"
}

Utilisation d’une google cloud function avec authorisation en php Lire la suite »

Développez en local avec des domaines .localhost

Petite note rapide pour présenter une fonctionnalité qui doit exister depuis des années mais que je n’avait jamais utilisé.
Ceci s’applique uniquement si vous développez en local sous linux ( testé sur les versions 18 à 22 de Ubuntu )

Historiquement pour mes urls de développement j’ai utilisé les extensions suivantes :

  • .dev
  • .local

Pour chaque domaine il faut ensuite ajouter une entrée dans le fichier /ect/hosts
Si vous utilisez l’extension .localhost cela ne sera plus nécessaire car elle est automatiquement associée à votre poste de développement 🙂

Dorénavant tous mes projets sont donc sous la forme : https://www.mon-url-de-site.com.localhost
Plus besoin de toucher à ce fichier hosts !…

Développez en local avec des domaines .localhost Lire la suite »

Prestashop : Ajouter un captcha sur les formulaires de vos modules

Afin d’éviter le spam sur vos différents formulaires je recommande en général la mise en place d’un captcha.
Ça fait plusieurs années que j’édite un module de captcha gratuit ( eicaptcha ) qui permets de l’éviter sur les formulaires suivants :

  • Formulaire de contact
  • Formulaire de création de compte
  • Formulaire d’inscription à la newsletter

Celui-ci est disponible sur github et a été téléchargé des dizaines de milliers de fois : https://github.com/nenes25/eicaptcha

Je viens de sortir une nouvelle version de ce module ( 2.4.0 ) qui rajoute une nouvelle fonctionnalité qui permets d’utiliser la vérification du captcha intégrée dans le module directement dans vos modules spécifiques.

Ceci à travers 2 nouvelles méthodes :

hookDisplayEicaptchaVerification : permets de récupérer un template d’affichage complet du captcha ( le captcha s’affiche directement )
hookActionGetEicaptchaParams : permets  de récupérer les paramètres nécessaires à l’affichage du captcha ( il est possible de faire un affichage spécifique )

Nous allons voir à travers cet article comment le mettre en place à travers la création d’un module hhcustomform
Le captcha sera implémenté dans 2 situations

  • Dans un formulaire sur la fiche produit
  • Dans un controller front

Captcha dans un formulaire sur la fiche produit

Pour afficher un formulaire sur la fiche produit nous allons utiliser le hook displayProductExtraContent qui va nous permettre de l’afficher comme sur la capture ci-dessous, directement dans les onglets de la fiche produit.…

Prestashop : Ajouter un captcha sur les formulaires de vos modules Lire la suite »

Prestashop : Améliorer la sécurité de votre site avec les csp

Les Content Security Policies ( CSP ) vous permettent d’améliorer la sécurité de votre site web et d’éviter les injections de contenus externes.
J’avais déjà fait un article sur leur utilité il y’a quelques années dans le cadre du passage au https : Détecter vos contenus mixtes avec les CSP
Je ne vais pas parapher plus en détails leurs fonctionnement car il existe de très bonnes ressources sur le sujet :

https://developer.mozilla.org/fr/docs/Web/HTTP/CSP (FR)
https://content-security-policy.com/ (EN)

Il est important de noter tout de même qu’il existe plusieurs modes de CSP avec des noms assez explicites :
Content-Security-Policy : Le fonctionnement normal
Content-Security-Policy-Report-Only : Fonctionnement « Debug » qui permets de récupérer les erreurs et avertissements en vue d’une correction.

Implémentation dans Prestashop

Pour l’implémenter dans Prestashop nous allons définir les CSP via un header http que nous pourrons définir directement en php
Pour cela il est possible d’utiliser le hook ActionControllerInitBefore qui est appelé assez tôt dans le workflow de l’ensemble des controllers ( Front / Back )
Voici comment je l’ai implémenté :

/**
     * Avant l'initialisation du controller on va définir les CSP
     * @param array $params
     * @return void
     * @throws PrestaShopException
     */
    public function hookActionControllerInitBefore(array $params): void
    {
        if (Configuration::get($this->configPrefix .

Prestashop : Améliorer la sécurité de votre site avec les csp Lire la suite »