Prestashop : gérer les emails dans vos modules

Dans cet article nous allons creuser tout de qui concerne la gestion des emails dans les modules prestashop.

Dans un premier temps comment envoyer un email bien sûr, mais nous verrons ensuite qu’il est très facile d’interagir avec les emails systèmes via les hooks.

Ce tutoriel s’applique à la version 1.7 de Prestashop, certains hooks n’existent pas dans la version 1.6  dont le hook hookActionEmailSendBefore , il reste cependant assez facile de les implémenter manuellement en surchargeant la classe Mail

Pour illustrer et tester tout ça nous allons passer par la création d’un module de POC hh_demoemails

L’archive sera disponible en fin d’article, mais je précise bien que c’est un module de démo et d’apprentissage et pas du tout en module destiné à être mis en production 😉

Fonctionnement général

La gestion de l’envoi dans Prestashop est relativement basique car elle est centralisée dans une seule fonction qui est la fonction send de la classe Mail voici ses paramètres, la signature de la fonction est relativement explicite

/**
     * Send Email.
Lire la suite...
Pas de commentaires

Prestashop : Ajout des conditions à valider dans le tunnel de commande

Petite découverte de la semaine d’une possibilité relativement pratique d’ajouter des conditions à valider dans le tunnel de commande.

La bonne nouvelle c’est que c’est très facile à faire via un module puisqu’il existe un hook pour cela 🙂
Voyons donc cela dans un module hhcgv dont voici le code

<?php
if (!defined('_PS_VERSION_')) {
    exit;
}
 
//Attention à bien include ceci
use PrestaShop\PrestaShop\Core\Checkout\TermsAndConditions;
 
class Hhcgv extends Module
{
 
    public function __construct()
    {
        $this->name = 'hhcgv';
        $this->tab = 'others';
        $this->version = '0.1.0';
        $this->author = 'hhennes';
        $this->bootstrap = true;
        parent::__construct();
 
        $this->displayName = $this->l('Module de demo cgv');
        $this->description = $this->l('Ajout de cgv personnalisées');
    }
 
    /**
     * Installation du module
     * @return bool
     */
    public function install()
    {
        if (
            !
Lire la suite...
Pas de commentaires

Prestashop : Ajout rapide des droits pour un groupe utilisateur

Lors de la création d’un nouveau groupe client,
par défaut celui-ci n’aura aucun droit de visualisation sur l’ensemble des catégories du site.

Cela peut poser problème dans le cas ou c’est le seul groupe d’un client.
( La bonne pratique est de laisser par défaut tous les clients dans le groupe « visiteur » également. )

Dans ce cas on obtient une belle page d’erreur lorsqu’on souhaite accéder à une catégorie sur laquelle le groupe n’a pas les droits d’accès

Voici  une petite requête qui permettra de corriger cela facilement.
Attention il est nécessaire de récupérer l’identifiant du groupe client à modifier.
Dans mon exemple l’identifiant du groupe « Pro » est 4

INSERT INTO ps_category_group ( SELECT id_category,4 FROM ps_category WHERE id_category NOT IN ( SELECT id_category FROM ps_category_group WHERE id_group = 4 ))
Lire la suite...
2 commentaires

10 ans pour le blog !

Les années et défilent, et ça y’est le cap fatidique des 10 ans est déjà arrivé pour le blog 🙂

Je profite de l’occasion pour faire une petite rétrospective du travail qui a été fait sur celui-ci lors de la dernière décennie, et pour partager pour ceux que ça intéressent quelques statistiques.

Pour ceux que ça intéresse, vous pouvez également regarder le premier article 🙂 : Bienvenue sur mon blog !

État des lieux

Tout d’abord au niveau de la ligne éditoriale, comme présenté à l’origine les informations publiées sont avant tout techniques et orientées autour des thématique suivantes :

  • Prestashop
  • Magento
  • Mantis Bug tracker
  • Administration système

Je pense avoir une certaine légitimité sur le sujet puisque ça fait presque aussi longtemps que je travaille sur ces plateformes que j’écris des articles.

L’idée d’écrire des articles sur ce sujet est parti il y’a quelques années.
A une époque ou, trouver des documentations techniques sur les solutions open source se résumait à chercher sur google ( j’éxagère à peine ).…

Lire la suite...
Pas de commentaires

Prestashop : bloquer les mises à jour de modules dans l’administration

Présentation du problème et solution

C’est un comportement bien connu et assez embêtant auquel je m’attaque aujourd’hui.

Qui n’a jamais pesté d’avoir mis à jour un module dans le back office de Prestashop alors qu’on souhaitait uniquement le configurer ..

Par défaut lorsqu’une mise à jour d’un module est disponible, c’est l’action « Upgrade » qui est l’action par défaut.

Un clic trop rapide et on se retrouve avec une version non testée et donc potentiellement des erreurs sur son site.

J’ai donc créé un petit module qui permets de désactiver l’action du bouton de mise à jour et qui affiche un autre message à la place.

Il est possible de configurer le comportement ( normal ou bloqué ) directement depuis la configuration du module.

Fonctionnement technique

Pour gérer cela nous allons créer un module hh_modulesupdater

Ce module va utiliser la possibilité de surcharger les templates symfony du core en reprenant simplement leur chemin dans un module.

Nous allons donc créer un fichier :
modules/hh_modulesupdater/views/PrestaShop/Admin/Module/Includes/action_button.html.twig

Lire la suite...
Pas de commentaires

Utiliser et configurer un proxy socks en local avec votre serveur dédié

Un petit tutoriel rapide pour faire face à une problématique que j’ai rencontré récemment.

Avec mon fournisseur d’accès à internet je n’ai pas d’adresse ip fixe, c’est gênant pour accéder à certains environnements dont l’accès est soumis à des restrictions d’ips.

Je possède en revanche plusieurs serveurs dédiés sur internet qui eux ont bien des ips fixes.
Vous l’aurez compris l’idée va être de se connecter à travers l’un de ces serveurs pour obtenir une ip fixe également.

La configuration de cette connexion est facile et ne prendra pas plus de 2 minutes 🙂

Les prérequis sont les suivants :

  • Accès ssh à un serveur
  • Système linux ou WSL disponible
  • Extension FoxyProxy

Gestion de la connexion ssh

Pour se simplifier la vie on va configurer ce proxy directement dans le fichier ~/.ssh/config de la même manière que pour n’importe quelle connexion ssh :

Host herve.tunnel
 Hostname myserverNameOrIP
 User ServeurUser
 Port ServerPort
 DynamicForward 8000 #Attention à cette ligne

Remplacez bien évidemment les informations du hostname de l’user et du port par les accès à votre serveur.…

Lire la suite...
Pas de commentaires

Prestashop : gagnez du temps lors la personnalisation des fichiers pdf ( factures / livraisons … )

Une petite note rapide pour donner et historiser une astuce bien pratique dans le cas ou vous souhaitez faire des modifications sur les fichiers pdfs générés par Prestashop dans l’administration.

Ceci concerne tout ceux qui sont générés  par le controller : controllers/admin/AdminPdfController.php

  • Les factures
  • Les livraisons
  • Commandes fournisseurs

Par défaut le comportement est que le fichier pdf est téléchargé par le navigateur, ce qui devient relativement pénible lorsque les modifications sont assez lourdes.

Pour forcer l’affichage du pdf dans le navigateur il vous suffit de modifier la fonction generatePDF du controller  controllers/admin/AdminPdfController.php et de rajouter l’option « I » dans l’appel à la fonction render

public function generatePDF($object, $template)
    {
        $pdf = new PDF($object, $template, Context::getContext()->smarty);
        $pdf->render('I'); //Changement de code ici
    }

Le contenu du fichier pdf sera ensuite affiché directement dans le navigateur ce qui fera gagner un temps précieux dans la visualisation des modifications pdf 🙂

Cette astuce a été testée sur une 1.7.4 et une 1.7.6 , mais je pense qu’elle doit fonctionner sur l’ensemble des versions 1.7…

Lire la suite...
Pas de commentaires

Prestashop : Utilisation avancée des AdminController – Les options

Cet article fait partie d’une série d’articles qui présentent les fonctionnalités avancées disponibles dans un controller d’administration Prestashop. ( adminController )
Les exemples sont réalisés dans le cadre d’un module mais s’appliquent également à tous les anciens controllers de l’administration qui n’utilisent pas encore l’infrastructure symfony
Vous pouvez-consulter les autres articles de la série :

Dans cet article nous allons à présent nous intéresser à la gestion des options de notre controller et voir les cas suivants :

  • Ensemble des cas d’affichage d’options
  • Traitement spécifique d’une option

Les options sont définies dans la fonction __construct() du controller
Voici un code qui génère une grande partie des cas  avec les commentaires explicatifs de leur fonctionnement.

Attention car les valeurs des options seront stockées dans la table globale de configuration de Prestashop.
Pensez donc à bien supprimer ces informations lors de la désinstallation de votre module.…

Lire la suite...
Pas de commentaires

Prestashop : utilisation avancée des AdminController – Les formulaires

Cet article fait partie d’une série d’articles qui présentent les fonctionnalités avancées disponibles dans un controller d’administration Prestashop. ( adminController )
Les exemples sont réalisés dans le cadre d’un module mais s’appliquent également à tous les anciens controllers de l’administration qui n’utilisent pas encore l’infrastructure symfony
Vous pouvez-consulter les autres articles de la série :

Cet article est encore d’écriture et présente les informations spécifiques aux formulaires

Informations générales

Les formulaires dans les controllers d’administration sont gérés par la classe HelperForm dont le code complet est visible ici :

https://github.com/PrestaShop/PrestaShop/blob/develop/classes/helper/HelperForm.php

Le rendu est ensuite affiché à partir du template : admin-dir/themes/default/template/helpers/form/form.tpl

 

Les types de champs possibles

La bonne nouvelle et qu’il existe une page de démonstration de l’ensemble des possibilités de ces champs dans tous les sites prestashop 🙂

Pour y accéder il faut aller dans votre administration et saisir l’adresse :

http://www.votre-site.comt/admin-dir/index.php?controller=…

Lire la suite...
Pas de commentaires

Prestashop : utilisation avancée des AdminController – Les listings

Cet article fait partie d’une série d’articles qui présentent les fonctionnalités avancées disponibles dans un controller d’administration Prestashop. ( adminController )
Les exemples sont réalisés dans le cadre d’un module mais s’appliquent également à tous les anciens controllers de l’administration qui n’utilisent pas encore l’infrastructure symfony
Vous pouvez-consulter les autres articles de la série :

Cet article détaillera les fonctionnalités suivantes

  • Fonctionnement général
  • Champs active / non active
  • Ajouter un callback sur un champ
  • Ajouter des actions de masse personnalisée
  • Récupérer les données de plusieurs tables

Fonctionnement général

Les listings dans les controllers admin prestashop sont gérés par le helper « HelperList » qui est disponible dans le dossier classes/helpers/HelperList.php

Pour le fonctionnement basique vous pouvez regarder cet article https://www.h-hennes.fr/blog/2018/11/15/prestashop-admincontroller-pour-un-module/
L’initialisation et l’affichage du la liste sont géré dans la fonction renderList() de la class AdminController

Cet article est en cours d’écriture et présentera les informations spécifiques aux listings…

Lire la suite...
Pas de commentaires

Archives

Compte Github